/* * */ package com.fp.bpmlib; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl; import org.kie.api.task.model.Task; import org.kie.api.task.model.TaskData; import com.fp.base.persistence.util.helper.GeneralDescriptions; import com.fp.bpmlib.db.DataHelper; import com.fp.bpmlib.flow.Monitor; import com.fp.dto.Request; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.pgeneral.log.TgeneTransactionLog; import com.fp.simple.dto.TaskInfo; // TODO: Auto-generated Javadoc /** * Class ProcessUtil encargada de. * * @author gfiallos */ public final class ProcessUtil { /** Constante ACTUAL_TASK. */ public static final String ACTUAL_TASK = "actualTask"; /** Constante DATA. */ public static final String DATA = "maia"; /** El valor de instance. */ private static ProcessUtil instance = null; /** Constante PID. */ public static final String PID = "pid"; /** Constante REQUEST. */ public static final String REQUEST = "request"; /** Constante SNAPSHOT. */ public static final String SNAPSHOT = "snapshot"; /** Constante TASK_METADATA. */ public static final String TASK_METADATA = "taskMetaData"; /** Constante TASKS_METADATA. */ public static final String TASKS_METADATA = "tasksMetaData"; /** * Obtiene el valor de done task meta data. * * @param pProcess the process * @param pName the name * @return Valor de done task meta data * @throws Exception la exception */ @SuppressWarnings("unchecked") public static Object getDoneTaskMetaData(Monitor monitor, String pName) throws Exception { Object tasks = monitor.getVariable(ProcessUtil.TASKS_METADATA); if (tasks != null) { Map m = (Map) tasks; Map record = new HashMap(); record.put(pName, ProcessUtil.manageHistory(monitor,(List) m.get(pName))); return record; } return null; } /** * Obtiene el valor de first done task meta data. * * @param pProcess the process * @return Valor de first done task meta data * @throws Exception la exception */ @SuppressWarnings("unchecked") public static Map getFirstDoneTaskMetaData(Monitor monitor) throws Exception { Object tasks = monitor.getVariable(ProcessUtil.TASKS_METADATA); if (tasks != null) { Map m = (Map) tasks; for (Entry entry : m.entrySet()) { Map record = new HashMap(); record.put(entry.getKey(), ProcessUtil.getDoneTaskMetaData(monitor, entry.getKey())); return record; } } return null; } /** * Obtiene la Ășnica instancia de ProcessUtil. * * @return Ășnica instancia de ProcessUtil */ public static ProcessUtil getInstance() { synchronized (ProcessUtil.class) { if (ProcessUtil.instance == null) { ProcessUtil.instance = new ProcessUtil(); } return ProcessUtil.instance; } } /** * Manage history. * * @param pHistory the history * @return list * @throws Exception la exception */ protected static List manageHistory(Monitor monitor,List pHistory) throws Exception { if (pHistory == null) { return null; } for (TaskInfo taskInfo : pHistory) { Object tid = taskInfo.getTaskId(); if (tid == null) { tid = taskInfo.getTaskId(); } if (tid != null) { ProcessUtil.manageTaskId(monitor, taskInfo, Long.valueOf("" + tid)); } } return pHistory; } /** * Manage task id. * * @param pTask the task * @param pTID the tID * @throws Exception la exception */ private static void manageTaskId(Monitor monitor,TaskInfo pTask, Long pTID) throws Exception { pTask.setTaskId(pTID); Map aditionalData = pTask.getAditionalData(); Task t = monitor.getTaskService().getTaskById(pTID); BAMTaskSummaryImpl bam = monitor.getBAMTaskSummaryImpl(pTID); pTask.setCreated(new Timestamp(t.getTaskData().getCreatedOn().getTime()) ); pTask.setStarted(new Timestamp(bam.getStartDate().getTime()) ); pTask.setCompleted(new Timestamp(bam.getEndDate().getTime())); TaskData td = t.getTaskData(); aditionalData.put("status", td.getStatus().name()); aditionalData.put("userId", td.getActualOwner().getId()); aditionalData.put("name", GeneralDescriptions.getUsername(td.getActualOwner().getId())); } /** * Crea una nueva instancia de process util. */ private ProcessUtil() { } /** * Prepare record. * * @param pName the name * @param pValue the value * @param pRequest the request * @param label the label * @return map * @throws Exception la exception */ public Map prepareRecord(String pName, Object pValue, Request pRequest, boolean label) throws Exception { Map m = new HashMap(); if (label) { m.put("NAME", GeneralDescriptions.getLabel(pName, pRequest.getLanguage(), pRequest.getChannelCode())); } else { m.put("NAME", pName); } m.put("VALUE", pValue); m.put("CODE", pName); return m; } /** * Prepare record. * * @param pName the name * @param pValue the value * @param pRequest the request * @return map * @throws Exception la exception */ public Map prepareRecord(String pName, Object pValue, Request pRequest) throws Exception { return this.prepareRecord(pName, pValue, pRequest, true); } /** * Transaction data. * * @param pJournalId the journal id * @param pRequest the request * @param label the label * @return list * @throws Exception la exception */ public List> transactionData(String pJournalId, Request pRequest, boolean label) throws Exception { TgeneTransactionLog log = TgeneTransactionLog.find(PersistenceHelper.getEntityManager(), pJournalId); List> data = new ArrayList>(); SimpleDateFormat sdf = DataHelper.getInstance().getDateTimeFormat(pRequest.getCompany()); if(log!=null){ data.add(this.prepareRecord("creationdate", sdf.format(log.getRealdate()), pRequest, label)); data.add(this.prepareRecord("user", log.getUsercode(), pRequest, label)); data.add(this.prepareRecord("name", GeneralDescriptions.getOfficername(log.getUsercode()), pRequest, label)); data.add(this.prepareRecord("email", GeneralDescriptions.getEmailByUser(log.getUsercode()), pRequest, label)); data.add(this.prepareRecord("branch", log.getBranchcode() + " " + GeneralDescriptions.getBranchdesc(log.getBranchcode(), pRequest.getCompany()), pRequest, label)); data.add(this.prepareRecord("office", log.getOfficecode() + " " + GeneralDescriptions.getOfficedesc(log.getOfficecode(), log.getBranchcode(), pRequest.getCompany()), pRequest, label)); data.add(this.prepareRecord("transaction", log.getTransactionmodule() + "-" + log.getTransactioncode() + "-" + log.getTransactionversion() + " " + GeneralDescriptions.getTransactiondesc(log.getTransactionmodule(), log.getTransactioncode(), log.getTransactionversion()), pRequest, label)); if (log.getAditionaldata() != null) { data.add(this.prepareRecord("message", log.getAditionaldata(), pRequest, label)); } } return data; } /** * Transaction data. * * @param pJournalId the journal id * @param pRequest the request * @return list * @throws Exception la exception */ public List> transactionData(String pJournalId, Request pRequest) throws Exception { return this.transactionData(pJournalId, pRequest, true); } }