All Downloads are FREE. Search and download functionalities are using the official Maven repository.

metadataapis.FacilityAPI Maven / Gradle / Ivy

package metadataapis;

import abstractapis.AbstractAPI;
import commonapis.*;
import model.*;
import org.epos.eposdatamodel.LinkedEntity;
import relationsapi.CategoryRelationsAPI;
import relationsapi.ContactPointRelationsAPI;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

public class FacilityAPI extends AbstractAPI {

    public FacilityAPI(String entityName, Class edmClass) {
        super(entityName, edmClass);
    }

    @Override
    public LinkedEntity create(org.epos.eposdatamodel.Facility obj) {

        List returnList = getDbaccess().getOneFromDB(
                obj.getInstanceId(),
                obj.getMetaId(),
                obj.getUid(),
                obj.getVersionId(),
                getEdmClass());

        if(!returnList.isEmpty()){
            obj.setInstanceId(returnList.get(0).getInstanceId());
            obj.setMetaId(returnList.get(0).getMetaId());
            obj.setUid(returnList.get(0).getUid());
            obj.setVersionId(returnList.get(0).getVersionId());
        }

        obj = (org.epos.eposdatamodel.Facility) VersioningStatusAPI.checkVersion(obj);

        Facility edmobj = new Facility();

        edmobj.setVersionId(obj.getVersionId());
        edmobj.setInstanceId(obj.getInstanceId());
        edmobj.setMetaId(obj.getMetaId());

        getDbaccess().updateObject(edmobj);

        edmobj.setUid(Optional.ofNullable(obj.getUid()).orElse(getEdmClass().getSimpleName()+"/"+UUID.randomUUID().toString()));
        edmobj.setType(obj.getType());
        edmobj.setIdentifier(obj.getIdentifier());
        edmobj.setDescription(obj.getDescription());
        edmobj.setTitle(obj.getTitle());
        edmobj.setKeywords(obj.getKeywords());

        /** CATEGORY **/
        if (obj.getCategory() != null && !obj.getCategory().isEmpty())
            CategoryRelationsAPI.createRelation(edmobj,obj);

        /** CONTACTPOINT **/
        if (obj.getContactPoint() != null && !obj.getContactPoint().isEmpty())
            ContactPointRelationsAPI.createRelation(edmobj,obj);


        /** ADDRESS **/
        if (obj.getAddress() != null && !obj.getAddress().isEmpty()) {
            List facilityAddressList = getDbaccess().getAllFromDB(FacilityAddress.class);
            for(FacilityAddress item : facilityAddressList){
                if(item.getFacilityInstanceId().equals(obj.getInstanceId())){
                    getDbaccess().deleteObject(item);
                }
            }
            AddressAPI addressAPI = new AddressAPI(EntityNames.ADDRESS.name(), Address.class);
            edmobj.setFacilityAddressesByInstanceId(new ArrayList<>());
            for(LinkedEntity address : obj.getAddress()){
                List
list = dbaccess.getOneFromDBByInstanceId(address.getInstanceId(),Address.class); Address address1 = null; if(list.isEmpty()){ LinkedEntity le = LinkedEntityAPI.createFromLinkedEntity(address); address1 = (Address) dbaccess.getOneFromDBByInstanceId(le.getInstanceId(), Address.class).get(0); } else { address1 = list.get(0); } FacilityAddress pi = new FacilityAddress(); pi.setFacilityByFacilityInstanceId(edmobj); pi.setFacilityInstanceId(edmobj.getInstanceId()); pi.setAddressInstanceId(address1.getInstanceId()); pi.setAddressByAddressInstanceId(address1); edmobj.getFacilityAddressesByInstanceId().add(pi); dbaccess.updateObject(pi); } } /** ISPARTOF **/ if (obj.getIsPartOf() != null && !obj.getIsPartOf().isEmpty()) { List facilityIspartofList = getDbaccess().getAllFromDB(FacilityIspartof.class); for(FacilityIspartof item : facilityIspartofList){ if(item.getFacility1InstanceId().equals(obj.getInstanceId())){ getDbaccess().deleteObject(item); } } edmobj.setFacilityIspartofsByInstanceId(new ArrayList<>()); for(LinkedEntity facility : obj.getIsPartOf()){ List list = dbaccess.getOneFromDBByInstanceId(facility.getInstanceId(),Facility.class); Facility facility1 = null; if(list.isEmpty()){ LinkedEntity le = LinkedEntityAPI.createFromLinkedEntity(facility); facility1 = (Facility) dbaccess.getOneFromDBByInstanceId(le.getInstanceId(), Facility.class).get(0); } else { facility1 = list.get(0); } FacilityIspartof pi = new FacilityIspartof(); pi.setFacilityByFacility1InstanceId(edmobj); pi.setFacility1InstanceId(edmobj.getInstanceId()); pi.setFacility2InstanceId(facility1.getInstanceId()); pi.setFacilityByFacility2InstanceId(facility1); edmobj.getFacilityIspartofsByInstanceId().add(pi); dbaccess.updateObject(pi); } } /** SPATIAL **/ if (obj.getSpatialExtent() != null && !obj.getSpatialExtent().isEmpty()) { List facilitySpatialList = getDbaccess().getAllFromDB(FacilitySpatial.class); for(FacilitySpatial item : facilitySpatialList){ if(item.getFacilityInstanceId().equals(obj.getInstanceId())){ getDbaccess().deleteObject(item); } } SpatialAPI spatialAPI = new SpatialAPI(EntityNames.LOCATION.name(), Spatial.class); edmobj.setFacilitySpatialsByInstanceId(new ArrayList<>()); for(org.epos.eposdatamodel.Location location : obj.getSpatialExtent()){ List list = dbaccess.getOneFromDBByInstanceId(location.getInstanceId(),Spatial.class); Spatial spatial = null; if(list.isEmpty()){ LinkedEntity le = spatialAPI.create(location); spatial = (Spatial) dbaccess.getOneFromDBByInstanceId(le.getInstanceId(), Spatial.class).get(0); } else { spatial = list.get(0); } FacilitySpatial pi = new FacilitySpatial(); pi.setFacilityByFacilityInstanceId(edmobj); pi.setFacilityInstanceId(edmobj.getInstanceId()); pi.setSpatialInstanceId(spatial.getInstanceId()); pi.setSpatialBySpatialInstanceId(spatial); edmobj.getFacilitySpatialsByInstanceId().add(pi); dbaccess.updateObject(pi); } } List elementslist = getDbaccess().getAllFromDB(FacilityElement.class); edmobj.setFacilityElementsByInstanceId(new ArrayList<>()); for(FacilityElement item : elementslist){ if(item.getFacilityInstanceId().equals(obj.getInstanceId())){ getDbaccess().deleteObject(item); List list2 = getDbaccess().getOneFromDBByInstanceId(item.getElementInstanceId(), Element.class); getDbaccess().deleteObject(list2.get(0)); } } /* PAGEURL */ if(obj.getPageURL()!=null && !obj.getPageURL().isEmpty()){ for(String pageurl : obj.getPageURL()) { createInnerElement(ElementType.PAGEURL, pageurl, edmobj); } } getDbaccess().updateObject(edmobj); return new LinkedEntity().entityType(entityName) .instanceId(edmobj.getInstanceId()) .metaId(edmobj.getMetaId()) .uid(edmobj.getUid()); } private void createInnerElement(ElementType elementType, String value, Facility edmobj){ org.epos.eposdatamodel.Element element = new org.epos.eposdatamodel.Element(); element.setType(elementType); element.setValue(value); ElementAPI api = new ElementAPI(EntityNames.ELEMENT.name(), Element.class); LinkedEntity le = api.create(element); List el = dbaccess.getOneFromDBByInstanceId(le.getInstanceId(), Element.class); FacilityElement ce = new FacilityElement(); ce.setFacilityByFacilityInstanceId(edmobj); ce.setFacilityInstanceId(edmobj.getInstanceId()); ce.setElementByElementInstanceId(el.get(0)); ce.setElementInstanceId(el.get(0).getInstanceId()); edmobj.getFacilityElementsByInstanceId().add(ce); dbaccess.updateObject(ce); } @Override public org.epos.eposdatamodel.Facility retrieve(String instanceId) { Facility edmobj = (Facility) getDbaccess().getOneFromDBByInstanceId(instanceId, Facility.class).get(0); org.epos.eposdatamodel.Facility o = new org.epos.eposdatamodel.Facility(); o.setInstanceId(edmobj.getInstanceId()); o.setMetaId(edmobj.getMetaId()); o.setUid(edmobj.getUid()); o.setType(edmobj.getType()); o.setIdentifier(edmobj.getIdentifier()); o.setDescription(edmobj.getDescription()); o.setTitle(edmobj.getTitle()); o.setKeywords(edmobj.getKeywords()); if(edmobj.getFacilityCategoriesByInstanceId().size()>0) { for(FacilityCategory ed : edmobj.getFacilityCategoriesByInstanceId()) { CategoryAPI api = new CategoryAPI(EntityNames.CATEGORY.name(), Category.class); LinkedEntity cp = api.retrieveLinkedEntity(ed.getCategoryInstanceId()); o.addCategory(cp); } } if(edmobj.getFacilityContactpointsByInstanceId().size()>0) { for(FacilityContactpoint ed : edmobj.getFacilityContactpointsByInstanceId()) { ContactPointAPI api = new ContactPointAPI(EntityNames.CONTACTPOINT.name(), Contactpoint.class); LinkedEntity cp = api.retrieveLinkedEntity(ed.getContactpointInstanceId()); o.addContactPoint(cp); } } if(edmobj.getFacilityAddressesByInstanceId().size()>0) { for(FacilityAddress ed : edmobj.getFacilityAddressesByInstanceId()) { AddressAPI api = new AddressAPI(EntityNames.ADDRESS.name(), Address.class); LinkedEntity cp = api.retrieveLinkedEntity(ed.getAddressInstanceId()); o.addAddress(cp); } } if(edmobj.getFacilityIspartofsByInstanceId().size()>0) { for(FacilityIspartof ed : edmobj.getFacilityIspartofsByInstanceId()) { LinkedEntity cp = retrieveLinkedEntity(ed.getFacility2InstanceId()); o.addIsPartOf(cp); } } if(edmobj.getFacilitySpatialsByInstanceId().size()>0) { for(FacilitySpatial ed : edmobj.getFacilitySpatialsByInstanceId()) { SpatialAPI api = new SpatialAPI(EntityNames.LOCATION.name(), Spatial.class); org.epos.eposdatamodel.Location cp = api.retrieve(ed.getSpatialInstanceId()); o.addSpatialExtentItem(cp); } } if(edmobj.getFacilityElementsByInstanceId().size()>0) { for(FacilityElement ed : edmobj.getFacilityElementsByInstanceId()) { Element el = ed.getElementByElementInstanceId(); if(el.getType().equals(ElementType.PAGEURL)) o.addPageURL(el.getValue()); } } return o; } @Override public LinkedEntity retrieveLinkedEntity(String instanceId) { Facility edmobj = (Facility) getDbaccess().getOneFromDBByInstanceId(instanceId, Facility.class).get(0); LinkedEntity o = new LinkedEntity(); o.setInstanceId(edmobj.getInstanceId()); o.setMetaId(edmobj.getMetaId()); o.setUid(edmobj.getUid()); o.setEntityType(EntityNames.FACILITY.name()); return o; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy