package pl.net.bluesoft.rnd.processtool.dao.impl;
import static org.hibernate.criterion.Restrictions.eq;
import org.hibernate.Criteria;
import org.hibernate.Session;
import pl.net.bluesoft.rnd.processtool.dao.ProcessInstanceSimpleAttributeDAO;
import pl.net.bluesoft.rnd.processtool.dao.UserSubstitutionDAO;
import pl.net.bluesoft.rnd.processtool.hibernate.SimpleHibernateBean;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstanceSimpleAttribute;
import pl.net.bluesoft.rnd.processtool.model.UserData;
import pl.net.bluesoft.rnd.processtool.model.UserSubstitution;
import java.util.Date;
import java.util.List;
/**
*@author kkolodziej@bluesoft.net.pl
*/
public class ProcessInstanceSimpleAttributeDAOImpl extends SimpleHibernateBean<ProcessInstanceSimpleAttribute> implements ProcessInstanceSimpleAttributeDAO {
public ProcessInstanceSimpleAttributeDAOImpl(Session hibernateSession) {
super(hibernateSession);
}
@Override
public String getSimpleAttributeValue(String key,ProcessInstance processInstance){
long start = System.currentTimeMillis();
ProcessInstanceSimpleAttribute pisa = getSimpleAttribute(key,processInstance);
long duration = System.currentTimeMillis() - start;
logger.severe("getSimpleAttributeValue: " + duration);
return pisa.getValue();
}
@Override
public List<ProcessInstanceSimpleAttribute> getSimpleAttributesList(ProcessInstance processInstance){
long start = System.currentTimeMillis();
List list = session.createCriteria(ProcessInstanceSimpleAttribute.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(eq("processInstance",processInstance)).list();
long duration = System.currentTimeMillis() - start;
logger.severe("getSimpleAttributesList: " + duration);
return list;
}
@Override
public ProcessInstanceSimpleAttribute setSimpleAttribute(String key, String newValue, ProcessInstance processInstance){
ProcessInstanceSimpleAttribute pisa = getSimpleAttribute(key,processInstance);
if(pisa==null){
return null;
}
pisa.setValue(newValue);
session.update(pisa);
return pisa;
}
private ProcessInstanceSimpleAttribute getSimpleAttribute(String key,ProcessInstance processInstance){
return (ProcessInstanceSimpleAttribute) session.createCriteria(ProcessInstanceSimpleAttribute.class)
.add(eq("processInstance",processInstance))
.add(eq("key",key)).uniqueResult();
}
}