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

commonapis.VersioningStatusAPI Maven / Gradle / Ivy

package commonapis;

import dao.EposDataModelDAO;
import model.*;
import org.epos.eposdatamodel.EPOSDataModelEntity;

import java.sql.Timestamp;
import java.time.Instant;
import java.util.*;

public class VersioningStatusAPI {

    public static void updateStatus(String instanceId, StatusType status){
        List returnList = getDbaccess().getOneFromDBByInstanceId(instanceId,Versioningstatus.class);
        returnList.get(0).setStatus(status);
        getDbaccess().updateObject(returnList.get(0));
    }

    public static EPOSDataModelEntity checkVersion(EPOSDataModelEntity obj) {

        List returnList = getDbaccess().getOneFromDB(
                Optional.ofNullable(obj.getInstanceId()).orElse(null),
                Optional.ofNullable(obj.getMetaId()).orElse(null),
                Optional.ofNullable(obj.getUid()).orElse(null),
                Optional.ofNullable(obj.getVersionId()).orElse(null),
                Versioningstatus.class
        );

        if(!returnList.isEmpty()){
            Versioningstatus edmobj = returnList.get(0);
            if(obj.getStatus()==null) obj.setStatus(StatusType.DRAFT);
            switch (edmobj.getStatus()){
                case DRAFT:
                    if(!obj.getStatus().equals(StatusType.DRAFT)) {
                        edmobj.setStatus(obj.getStatus());
                        edmobj.setInstanceChangeId(edmobj.getInstanceId());
                        obj.setInstanceChangedId(edmobj.getInstanceId());
                        edmobj.setInstanceId(UUID.randomUUID().toString());
                        obj.setInstanceId(edmobj.getInstanceId());
                        edmobj.setVersionId(UUID.randomUUID().toString());
                        obj.setVersionId(edmobj.getVersionId());
                    }
                    break;
                case ARCHIVED:
                case DISCARDED:
                case PUBLISHED:
                    if(obj.getStatus().equals(StatusType.DRAFT)) {
                        edmobj.setStatus(obj.getStatus());
                        edmobj.setInstanceChangeId(edmobj.getInstanceId());
                        obj.setInstanceChangedId(edmobj.getInstanceId());
                        edmobj.setInstanceId(UUID.randomUUID().toString());
                        obj.setInstanceId(edmobj.getInstanceId());
                        edmobj.setVersionId(UUID.randomUUID().toString());
                        obj.setVersionId(edmobj.getVersionId());
                    }
                    break;
                case SUBMITTED:
                    if(obj.getStatus().equals(StatusType.DRAFT))
                        edmobj.setStatus(obj.getStatus());
                    if(obj.getStatus().equals(StatusType.PUBLISHED))
                        edmobj.setStatus(obj.getStatus());
                    if(obj.getStatus().equals(StatusType.DISCARDED))
                        edmobj.setStatus(obj.getStatus());
                    if(obj.getStatus().equals(StatusType.ARCHIVED))
                        edmobj.setStatus(obj.getStatus());
                    break;
            }
            return updateVersion(obj, edmobj);
        } else {
            Versioningstatus edmobj = new Versioningstatus();
            if(obj.getStatus()!=null) edmobj.setStatus(obj.getStatus());
            else edmobj.setStatus(StatusType.DRAFT);
            edmobj.setInstanceId(UUID.randomUUID().toString());
            obj.setInstanceId(edmobj.getInstanceId());
            edmobj.setMetaId(UUID.randomUUID().toString());
            obj.setMetaId(edmobj.getMetaId());
            edmobj.setVersionId(UUID.randomUUID().toString());
            obj.setVersionId(edmobj.getVersionId());
            edmobj.setUid(obj.getUid());
            edmobj.setInstanceChangeId(null);
            edmobj.setChangeTimestamp(Timestamp.from(Instant.now()));
            edmobj.setChangeComment(Optional.ofNullable(obj.getChangeComment()).orElse(null));
            edmobj.setEditorId(Optional.ofNullable(obj.getEditorId()).orElse(null));
            edmobj.setProvenance(Optional.ofNullable(obj.getFileProvenance()).orElse(null));
            edmobj.setVersion(Optional.ofNullable(obj.getVersion()).orElse(null));

            getDbaccess().updateObject(edmobj);

            return obj;
        }
    }

    private static EposDataModelDAO getDbaccess() {
        return new EposDataModelDAO();
    }

    public static EPOSDataModelEntity updateVersion(EPOSDataModelEntity obj, Versioningstatus vs) {

        vs.setChangeComment(obj.getChangeComment());
        vs.setChangeTimestamp(Timestamp.from(Instant.now()));
        vs.setChangeComment(Optional.ofNullable(obj.getChangeComment()).orElse(null));
        vs.setEditorId(Optional.ofNullable(obj.getEditorId()).orElse(null));
        vs.setProvenance(Optional.ofNullable(obj.getFileProvenance()).orElse(null));
        vs.setVersion(Optional.ofNullable(obj.getVersion()).orElse(null));

        getDbaccess().updateObject(vs);

        return obj;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy