
commonapis.LinkedEntityAPI Maven / Gradle / Ivy
package commonapis;
import abstractapis.AbstractAPI;
import dao.EposDataModelDAO;
import metadataapis.*;
import model.*;
import org.epos.eposdatamodel.EPOSDataModelEntity;
import org.epos.eposdatamodel.LinkedEntity;
import org.epos.eposdatamodel.Parameter;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
public class LinkedEntityAPI {
public static LinkedEntity createFromLinkedEntity(LinkedEntity obj){
AbstractAPI api = null;
Class> edmClass = null;
EPOSDataModelEntity entity = null;
switch(EntityNames.valueOf(obj.getEntityType())){
case PERSON:
edmClass = Person.class;
api = new PersonAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Person();
break;
case MAPPING:
edmClass = Mapping.class;
api = new MappingAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Mapping();
break;
case CATEGORY:
edmClass = Category.class;
api = new CategoryAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Category();
break;
case FACILITY:
edmClass = Facility.class;
api = new FacilityAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Facility();
break;
case EQUIPMENT:
edmClass = Equipment.class;
api = new EquipmentAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Equipment();
break;
case OPERATION:
edmClass = Operation.class;
api = new OperationAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Operation();
break;
case WEBSERVICE:
edmClass = Webservice.class;
api = new WebServiceAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.WebService();
break;
case DATAPRODUCT:
edmClass = Dataproduct.class;
api = new DataProductAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.DataProduct();
break;
case CONTACTPOINT:
edmClass = Contactpoint.class;
api = new ContactPointAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.ContactPoint();
break;
case DISTRIBUTION:
edmClass = Distribution.class;
api = new DistributionAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Distribution();
break;
case ORGANIZATION:
edmClass = Organization.class;
api = new OrganizationAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Organization();
break;
case CATEGORYSCHEME:
edmClass = CategoryScheme.class;
api = new CategorySchemeAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.CategoryScheme();
break;
case SOFTWARESOURCECODE:
edmClass = SoftwareSourceCode.class;
api = new SoftwareSourceCodeAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.SoftwareSourceCode();
break;
case SOFTWAREAPPLICATION:
edmClass = SoftwareApplication.class;
api = new SoftwareApplicationAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.SoftwareApplication();
break;
case ADDRESS:
edmClass = Address.class;
api = new AddressAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Address();
break;
case ELEMENT:
edmClass = Element.class;
api = new ElementAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Element();
break;
case LOCATION:
edmClass = Spatial.class;
api = new SpatialAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Location();
break;
case PERIODOFTIME:
edmClass = Temporal.class;
api = new TemporalAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.PeriodOfTime();
break;
case IDENTIFIER:
edmClass = Identifier.class;
api = new IdentifierAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Identifier();
break;
case QUANTITATIVEVALUE:
edmClass = QuantitativeValue.class;
api = new QuantitativeValueAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.QuantitativeValue();
break;
case DOCUMENTATION:
edmClass = Element.class;
api = new DocumentationAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Documentation();
break;
case PARAMETER:
edmClass = SoftwareapplicationParameters.class;
api = new ParameterAPI(obj.getEntityType(), edmClass);
entity = new org.epos.eposdatamodel.Parameter();
break;
case RELATION:
System.out.println("Relation empty case");
break;
}
List returnList = getDbaccess().getOneFromDB(
Optional.ofNullable(obj.getInstanceId()).orElse(null),
Optional.ofNullable(obj.getMetaId()).orElse(null),
Optional.ofNullable(obj.getUid()).orElse(null),
null,
Versioningstatus.class
);
if(api!=null && entity!=null) {
if (returnList.isEmpty()) {
entity.setInstanceId(Optional.ofNullable(obj.getInstanceId()).orElse(UUID.randomUUID().toString()));
entity.setMetaId(Optional.ofNullable(obj.getMetaId()).orElse(UUID.randomUUID().toString()));
entity.setUid(Optional.ofNullable(obj.getUid()).orElse(UUID.randomUUID().toString()));
return api.create(entity);
} else {
Versioningstatus versioningstatus = returnList.get(0);
entity.setInstanceId(Optional.ofNullable(versioningstatus.getInstanceId()).orElse(UUID.randomUUID().toString()));
entity.setMetaId(Optional.ofNullable(versioningstatus.getMetaId()).orElse(UUID.randomUUID().toString()));
entity.setUid(Optional.ofNullable(obj.getUid()).orElse(null));
entity.setVersionId(Optional.ofNullable(versioningstatus.getVersionId()).orElse(UUID.randomUUID().toString()));
return api.create(entity);
}
}
return null;
}
public static Object retrieveFromLinkedEntity(LinkedEntity obj) {
AbstractAPI api = null;
Class> edmClass = null;
switch(EntityNames.valueOf(obj.getEntityType())){
case PERSON:
edmClass = Person.class;
api = new PersonAPI(obj.getEntityType(), edmClass);
break;
case MAPPING:
edmClass = Mapping.class;
api = new MappingAPI(obj.getEntityType(), edmClass);
break;
case CATEGORY:
edmClass = Category.class;
api = new CategoryAPI(obj.getEntityType(), edmClass);
break;
case FACILITY:
edmClass = Facility.class;
api = new FacilityAPI(obj.getEntityType(), edmClass);
break;
case EQUIPMENT:
edmClass = Equipment.class;
api = new EquipmentAPI(obj.getEntityType(), edmClass);
break;
case OPERATION:
edmClass = Operation.class;
api = new OperationAPI(obj.getEntityType(), edmClass);
break;
case WEBSERVICE:
edmClass = Webservice.class;
api = new WebServiceAPI(obj.getEntityType(), edmClass);
break;
case DATAPRODUCT:
edmClass = Dataproduct.class;
api = new DataProductAPI(obj.getEntityType(), edmClass);
break;
case CONTACTPOINT:
edmClass = Contactpoint.class;
api = new ContactPointAPI(obj.getEntityType(), edmClass);
break;
case DISTRIBUTION:
edmClass = Distribution.class;
api = new DistributionAPI(obj.getEntityType(), edmClass);
break;
case ORGANIZATION:
edmClass = Organization.class;
api = new OrganizationAPI(obj.getEntityType(), edmClass);
break;
case CATEGORYSCHEME:
edmClass = CategoryScheme.class;
api = new CategorySchemeAPI(obj.getEntityType(), edmClass);
break;
case SOFTWARESOURCECODE:
edmClass = SoftwareSourceCode.class;
api = new SoftwareSourceCodeAPI(obj.getEntityType(), edmClass);
break;
case SOFTWAREAPPLICATION:
edmClass = SoftwareApplication.class;
api = new SoftwareApplicationAPI(obj.getEntityType(), edmClass);
break;
case ADDRESS:
edmClass = Address.class;
api = new AddressAPI(obj.getEntityType(), edmClass);
break;
case ELEMENT:
edmClass = Element.class;
api = new ElementAPI(obj.getEntityType(), edmClass);
break;
case LOCATION:
edmClass = Spatial.class;
api = new SpatialAPI(obj.getEntityType(), edmClass);
break;
case PERIODOFTIME:
edmClass = Temporal.class;
api = new TemporalAPI(obj.getEntityType(), edmClass);
break;
case IDENTIFIER:
edmClass = Identifier.class;
api = new IdentifierAPI(obj.getEntityType(), edmClass);
break;
case QUANTITATIVEVALUE:
edmClass = QuantitativeValue.class;
api = new QuantitativeValueAPI(obj.getEntityType(), edmClass);
break;
case DOCUMENTATION:
edmClass = Element.class;
api = new DocumentationAPI(obj.getEntityType(), edmClass);
break;
case PARAMETER:
edmClass = SoftwareapplicationParameters.class;
api = new ParameterAPI(obj.getEntityType(), edmClass);
break;
case RELATION:
System.out.println("Relation empty case");
break;
}
List returnList = getDbaccess().getOneFromDB(
Optional.ofNullable(obj.getInstanceId()).orElse(null),
Optional.ofNullable(obj.getMetaId()).orElse(null),
Optional.ofNullable(obj.getUid()).orElse(null),
null,
Versioningstatus.class
);
if(api!=null) {
if (!returnList.isEmpty()) {
Versioningstatus edmobj = returnList.get(0);
return api.retrieve(edmobj.getInstanceId());
}
} else {
return createFromLinkedEntity(obj);
}
return null;
}
private static EposDataModelDAO getDbaccess() {
return new EposDataModelDAO();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy