package pl.net.bluesoft.rnd.processtool.dao.impl; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import pl.net.bluesoft.rnd.processtool.dao.ProcessStateActionDAO; import pl.net.bluesoft.rnd.processtool.hibernate.SimpleHibernateBean; import pl.net.bluesoft.rnd.processtool.model.BpmTask; import pl.net.bluesoft.rnd.processtool.model.ProcessInstance; import pl.net.bluesoft.rnd.processtool.model.UserAttribute; import pl.net.bluesoft.rnd.processtool.model.UserData; import pl.net.bluesoft.rnd.processtool.model.config.ProcessDefinitionConfig; import pl.net.bluesoft.rnd.processtool.model.config.ProcessStateAction; import java.util.*; import java.util.logging.Logger; import static org.hibernate.criterion.Restrictions.eq; /** * @author kkolodziej@bluesoft.net.pl */ public class ProcessStateActionDAOImpl extends SimpleHibernateBean<ProcessStateAction> implements ProcessStateActionDAO { private static Logger logger = Logger.getLogger(ProcessStateActionDAOImpl.class.getName()); public ProcessStateActionDAOImpl(Session session) { super(session); } @Override public List<ProcessStateAction> getActionsListByDefinition( ProcessDefinitionConfig processDefinitionConfig) { long start = System.currentTimeMillis(); List actionlist = session.createCriteria(ProcessStateAction.class) .createAlias("config", "conf") .createAlias("conf.definition", "pIdef") .add(eq("pIdef.id", processDefinitionConfig.getId())) .addOrder(Order.desc("id")) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .list(); long duration = System.currentTimeMillis() - start; logger.severe("getActionsListByDefinition: " + duration); return actionlist; } @Override public List<ProcessStateAction> getActionByNameFromDefinition(ProcessDefinitionConfig processDefinitionConfig, String bpmName){ ArrayList<ProcessStateAction> processStateActionList = new ArrayList<ProcessStateAction>(); List<ProcessStateAction> actionsListByDefinition = getActionsListByDefinition(processDefinitionConfig); for (ProcessStateAction processStateAction : actionsListByDefinition) { String procesStateBpmName = processStateAction.getBpmName(); if(procesStateBpmName.equals(bpmName)){ processStateActionList.add(processStateAction); } } return processStateActionList; } @Override public List<ProcessStateAction> getActionsBasedOnStateAndDefinitionId(String state,Long definitionId) { long start = System.currentTimeMillis(); List actionList = session.createCriteria(ProcessStateAction.class) .createAlias("config", "conf") .createAlias("conf.definition", "pIdef") .add(eq("pIdef.id", definitionId)) .add(eq("conf.name",state)) .addOrder(Order.desc("id")) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .list(); long duration = System.currentTimeMillis() - start; logger.severe("getActionsBasedOnStateAndDefinitionId: " + duration); return actionList; } }