maia/.svn/pristine/b3/b3f5f74f110dcf08b42fe6d2a17...

253 lines
8.7 KiB
Plaintext
Executable File

/*
*
*/
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<String, Object> m = (Map<String, Object>) tasks;
Map<String, Object> record = new HashMap<String, Object>();
record.put(pName, ProcessUtil.manageHistory(monitor,(List<TaskInfo>) 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<String, Object> getFirstDoneTaskMetaData(Monitor monitor) throws Exception {
Object tasks = monitor.getVariable(ProcessUtil.TASKS_METADATA);
if (tasks != null) {
Map<String, Object> m = (Map<String, Object>) tasks;
for (Entry<String, Object> entry : m.entrySet()) {
Map<String, Object> record = new HashMap<String, Object>();
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<TaskInfo> manageHistory(Monitor monitor,List<TaskInfo> 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<Object, Object> 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<String, Object> prepareRecord(String pName, Object pValue, Request pRequest, boolean label) throws Exception {
Map<String, Object> m = new HashMap<String, Object>();
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<String, Object> 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<Map<String, Object>> transactionData(String pJournalId, Request pRequest, boolean label) throws Exception {
TgeneTransactionLog log = TgeneTransactionLog.find(PersistenceHelper.getEntityManager(), pJournalId);
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
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<Map<String, Object>> transactionData(String pJournalId, Request pRequest) throws Exception {
return this.transactionData(pJournalId, pRequest, true);
}
}