
metadataapis.CategoryAPI Maven / Gradle / Ivy
package metadataapis;
import abstractapis.AbstractAPI;
import commonapis.VersioningStatusAPI;
import model.*;
import org.eclipse.persistence.internal.jpa.rs.metadata.model.Link;
import org.epos.eposdatamodel.LinkedEntity;
import java.util.*;
public class CategoryAPI extends AbstractAPI {
public CategoryAPI(String entityName, Class> edmClass) {
super(entityName, edmClass);
}
@Override
public LinkedEntity create(org.epos.eposdatamodel.Category 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.Category) VersioningStatusAPI.checkVersion(obj);
Category edmobj = new Category();
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.setName(Optional.ofNullable(obj.getName()).orElse(""));
edmobj.setDescription(Optional.ofNullable(obj.getDescription()).orElse(""));
if (Objects.nonNull(obj.getInScheme())) createInscheme(obj.getInScheme(), edmobj);
edmobj.setCategoryIspartofsByInstanceId(new ArrayList<>());
if (Objects.nonNull(obj.getBroader())) createBroaders(obj.getBroader(), edmobj);
if (Objects.nonNull(obj.getNarrower())) createNarrowers(obj.getNarrower(), edmobj);
getDbaccess().updateObject(edmobj);
return new LinkedEntity().entityType(entityName)
.instanceId(edmobj.getInstanceId())
.metaId(edmobj.getMetaId())
.uid(edmobj.getUid());
}
private void createInscheme(LinkedEntity inscheme, Category edmobj){
CategorySchemeAPI api = new CategorySchemeAPI(EntityNames.CATEGORYSCHEME.name(), CategoryScheme.class);
org.epos.eposdatamodel.CategoryScheme childObj = new org.epos.eposdatamodel.CategoryScheme();
childObj.setInstanceId(inscheme.getInstanceId());
childObj.setMetaId(inscheme.getMetaId());
childObj.setUid(inscheme.getUid());
LinkedEntity le = api.create(childObj);
edmobj.setInScheme(le.getInstanceId());
}
private void createBroaders(List broaders, Category edmobj){
for(LinkedEntity broader : broaders) {
org.epos.eposdatamodel.Category childObj = new org.epos.eposdatamodel.Category();
childObj.setInstanceId(broader.getInstanceId());
childObj.setMetaId(broader.getMetaId());
childObj.setUid(broader.getUid());
LinkedEntity le = create(childObj);
List list = getDbaccess().getAllFromDB(CategoryIspartof.class);
for(CategoryIspartof item : list){
if(item.getCategory1InstanceId().equals(le.getInstanceId())
&& item.getCategory2InstanceId().equals(edmobj.getInstanceId())){
getDbaccess().deleteObject(item);
}
}
CategoryIspartof categoryIspartof = new CategoryIspartof();
categoryIspartof.setCategory1InstanceId(((Category) getDbaccess().getOneFromDBByInstanceId(le.getInstanceId(), Category.class).get(0)).getInstanceId());
categoryIspartof.setCategory2InstanceId(edmobj.getInstanceId());
categoryIspartof.setCategoryByCategory1InstanceId((Category) getDbaccess().getOneFromDBByInstanceId(le.getInstanceId(), Category.class).get(0));
categoryIspartof.setCategoryByCategory2InstanceId(edmobj);
edmobj.getCategoryIspartofsByInstanceId().add(categoryIspartof);
getDbaccess().updateObject(categoryIspartof);
}
}
private void createNarrowers(List narrowers, Category edmobj){
CategoryAPI api = new CategoryAPI(EntityNames.CATEGORY.name(), Category.class);
for(LinkedEntity narrower : narrowers) {
org.epos.eposdatamodel.Category childObj = new org.epos.eposdatamodel.Category();
childObj.setInstanceId(narrower.getInstanceId());
childObj.setMetaId(narrower.getMetaId());
childObj.setUid(narrower.getUid());
LinkedEntity le = create(childObj);
List list = getDbaccess().getAllFromDB(CategoryIspartof.class);
for(CategoryIspartof item : list){
if(item.getCategory2InstanceId().equals(le.getInstanceId())
&& item.getCategory1InstanceId().equals(edmobj.getInstanceId())){
getDbaccess().deleteObject(item);
}
}
CategoryIspartof categoryIspartof = new CategoryIspartof();
categoryIspartof.setCategory1InstanceId(edmobj.getInstanceId());
categoryIspartof.setCategory2InstanceId(((Category) getDbaccess().getOneFromDBByInstanceId(le.getInstanceId(), Category.class).get(0)).getInstanceId());
categoryIspartof.setCategoryByCategory1InstanceId(edmobj);
categoryIspartof.setCategoryByCategory2InstanceId((Category) getDbaccess().getOneFromDBByInstanceId(le.getInstanceId(), Category.class).get(0));
edmobj.getCategoryIspartofsByInstanceId().add(categoryIspartof);
getDbaccess().updateObject(categoryIspartof);
}
}
@Override
public org.epos.eposdatamodel.Category retrieve(String instanceId) {
Category edmobj = (Category) getDbaccess().getOneFromDBByInstanceId(instanceId, Category.class).get(0);
org.epos.eposdatamodel.Category o = new org.epos.eposdatamodel.Category();
o.setInstanceId(edmobj.getInstanceId());
o.setMetaId(edmobj.getMetaId());
o.setUid(edmobj.getUid());
o.setName(edmobj.getName());
o.setDescription(edmobj.getDescription());
if(edmobj.getInScheme()!=null){
CategorySchemeAPI csapi = new CategorySchemeAPI(EntityNames.CATEGORYSCHEME.name(), CategoryScheme.class);
o.setInScheme(csapi.retrieveLinkedEntity(edmobj.getInScheme()));
}
edmobj.getCategoryIspartofsByInstanceId_0().isEmpty();
edmobj.getCategoryIspartofsByInstanceId().isEmpty();
if(edmobj.getCategoryIspartofsByInstanceId_0().size()>0) {
ArrayList broaders = new ArrayList<>();
for(CategoryIspartof ed : edmobj.getCategoryIspartofsByInstanceId_0()) {
broaders.add(retrieveLinkedEntity(ed.getCategory1InstanceId()));
}
o.setBroader(broaders);
}
if(edmobj.getCategoryIspartofsByInstanceId().size()>0) {
ArrayList narrowers = new ArrayList<>();
for(CategoryIspartof ed : edmobj.getCategoryIspartofsByInstanceId()) {
narrowers.add(retrieveLinkedEntity(ed.getCategory2InstanceId()));
}
o.setNarrower(narrowers);
}
return o;
}
@Override
public LinkedEntity retrieveLinkedEntity(String instanceId) {
Category edmobj = (Category) getDbaccess().getOneFromDBByInstanceId(instanceId, Category.class).get(0);
LinkedEntity o = new LinkedEntity();
o.setInstanceId(edmobj.getInstanceId());
o.setMetaId(edmobj.getMetaId());
o.setUid(edmobj.getUid());
o.setEntityType(EntityNames.CATEGORY.name());
return o;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy