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

metadataapis.MappingAPI Maven / Gradle / Ivy

package metadataapis;

import abstractapis.AbstractAPI;
import commonapis.ElementAPI;
import commonapis.VersioningStatusAPI;
import model.*;
import org.epos.eposdatamodel.LinkedEntity;

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

public class MappingAPI extends AbstractAPI {

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

    @Override
    public LinkedEntity create(org.epos.eposdatamodel.Mapping 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.Mapping) VersioningStatusAPI.checkVersion(obj);

        Mapping edmobj = new Mapping();

        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.setLabel(obj.getLabel());
        edmobj.setValuepattern(obj.getValuePattern());
        edmobj.setDefaultvalue(obj.getDefaultValue());
        edmobj.setMaxvalue(obj.getMaxValue());
        edmobj.setMinvalue(obj.getMinValue());
        edmobj.setMultipleValues(obj.getMultipleValues());
        edmobj.setReadOnlyValue(obj.getReadOnlyValue());
        edmobj.setRequired(Boolean.getBoolean(obj.getRequired()));
        edmobj.setRange(obj.getRange());
        edmobj.setProperty(obj.getProperty());


        /** RETURNS **/

        edmobj.setMappingElementsByInstanceId(new ArrayList<>());
        if(obj.getParamValue()!=null && !obj.getParamValue().isEmpty()){
            for(String paramvalue : obj.getParamValue()) {
                createInnerElement(ElementType.PARAMVALUE, paramvalue, 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, Mapping 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);
        MappingElement ce = new MappingElement();
        ce.setMappingByMappingInstanceId(edmobj);
        ce.setMappingInstanceId(edmobj.getInstanceId());
        ce.setElementByElementInstanceId(el.get(0));
        ce.setElementInstanceId(el.get(0).getInstanceId());

        edmobj.getMappingElementsByInstanceId().add(ce);

        dbaccess.updateObject(ce);
    }


    @Override
    public org.epos.eposdatamodel.Mapping retrieve(String instanceId) {
        Mapping edmobj = (Mapping) getDbaccess().getOneFromDBByInstanceId(instanceId, Mapping.class).get(0);

        org.epos.eposdatamodel.Mapping o = new org.epos.eposdatamodel.Mapping();
        o.setInstanceId(edmobj.getInstanceId());
        o.setMetaId(edmobj.getMetaId());
        o.setUid(edmobj.getUid());
        o.setLabel(edmobj.getLabel());
        o.setValuePattern(edmobj.getValuepattern());
        o.setDefaultValue(edmobj.getDefaultvalue());
        o.setMaxValue(edmobj.getMaxvalue());
        o.setMinValue(edmobj.getMinvalue());
        o.setMultipleValues(edmobj.getMultipleValues());
        o.setReadOnlyValue(edmobj.getReadOnlyValue());
        o.setRequired(Boolean.toString(edmobj.isRequired()));
        o.setRange(edmobj.getRange());
        o.setProperty(edmobj.getProperty());

        if(edmobj.getMappingElementsByInstanceId().size()>0) {
            for(MappingElement ed : edmobj.getMappingElementsByInstanceId()) {
                Element el = ed.getElementByElementInstanceId();
                if(el.getType().equals(ElementType.PARAMVALUE)) {
                    o.addParamValue(el.getValue());
                }
            }
        }

        return o;
    }

    @Override
    public LinkedEntity retrieveLinkedEntity(String instanceId) {
        Mapping edmobj = (Mapping) getDbaccess().getOneFromDBByInstanceId(instanceId, Mapping.class).get(0);

        LinkedEntity o = new LinkedEntity();
        o.setInstanceId(edmobj.getInstanceId());
        o.setMetaId(edmobj.getMetaId());
        o.setUid(edmobj.getUid());
        o.setEntityType(EntityNames.MAPPING.name());

        return o;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy