@Override public UserData loadOrCreateUserByLogin(UserData ud) { Session session = getSession(); if (session.contains(ud)) { return ud; } if (ud.getId() != null) { return (UserData) session.get(UserData.class, ud.getId()); } else { List users = session.createCriteria(UserData.class).add(eq("login", ud.getLogin())).list(); if (users.isEmpty()) { session.saveOrUpdate(ud); return ud; } else { return (UserData) users.get(0); } } }
.add(Restrictions.eq("u.id", userData.getId()));
@Override public ResultsPageWrapper<ProcessInstance> getRecentProcesses(UserData userData, Calendar minDate, Integer offset, Integer limit) { Session session = getSession(); List<ProcessInstance> instances = null; if (offset != null && limit != null) { List<Long> list = session.createCriteria(ProcessInstance.class) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .setProjection(Projections.distinct(Projections.property("id"))) .addOrder(Order.desc("id")) .setFirstResult(offset) .setMaxResults(limit) .createCriteria("processLogs") .add(Restrictions.gt("entryDate", minDate)) .createAlias("user", "u") .add(Restrictions.eq("u.id", userData.getId())) .list(); instances = getProcessInstancesByIds(list); } Number total = (Number) session.createCriteria(ProcessInstance.class) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .setProjection(Projections.countDistinct("id")) .createCriteria("processLogs") .add(Restrictions.gt("entryDate", minDate)) .createAlias("user", "u") .add(Restrictions.eq("u.id", userData.getId())).uniqueResult(); ResultsPageWrapper<ProcessInstance> resultsPageWrapper = new ResultsPageWrapper<ProcessInstance>(instances != null ? instances : new ArrayList<ProcessInstance>(), total == null ? 0 : total.intValue()); return resultsPageWrapper; }
public long saveProcessInstance(ProcessInstance processInstance) { UserData creator = processInstance.getCreator(); if (creator != null) { if (creator.getId() != null) { processInstance.setCreator((UserData) session.get(UserData.class, creator.getId())); } else { List users = session.createCriteria(UserData.class)