List of usage examples for org.hibernate.criterion Projections count
public static CountProjection count(String propertyName)
From source file:de.powerstaff.business.dao.hibernate.FreelancerDAOHibernateImpl.java
License:Open Source License
@Override public void delete(final Object aEntity) throws ReferenceExistsException, OptimisticLockException { // Freiberufler drfen nicht gelscht werden, wenn sie bereits einem Projekt zugewiesen sind. boolean exists = getHibernateTemplate().execute(new HibernateCallback<Boolean>() { @Override/* ww w. j a va 2 s .c om*/ public Boolean doInHibernate(Session aSession) throws HibernateException, SQLException { Freelancer theFreelancer = (Freelancer) aEntity; Criteria theCriteria = aSession.createCriteria(ProjectPosition.class); theCriteria.add(Restrictions.eq("freelancerId", theFreelancer.getId())); theCriteria.setProjection(Projections.count("id")); Long theCount = (Long) theCriteria.uniqueResult(); return theCount != 0; } }); if (exists) { throw new ReferenceExistsException(); } super.delete(aEntity); }
From source file:de.sub.goobi.forms.ProjekteForm.java
License:Open Source License
/** * generates values for count of volumes and images for statistics. */// ww w . jav a2s.co m @SuppressWarnings("rawtypes") public void GenerateValuesForStatistics() { Criteria crit = Helper.getHibernateSession().createCriteria(Process.class) .add(Restrictions.eq("projekt", this.myProjekt)); ProjectionList pl = Projections.projectionList(); pl.add(Projections.sum("sortHelperImages")); pl.add(Projections.count("sortHelperImages")); crit.setProjection(pl); List list = crit.list(); Long images = 0l; Long volumes = 0l; for (Object obj : list) { Object[] row = (Object[]) obj; images = (Long) row[0]; volumes = (Long) row[1]; } this.myProjekt.setNumberOfPages(images.intValue()); this.myProjekt.setNumberOfVolumes(volumes.intValue()); }
From source file:de.sub.goobi.helper.ProjectHelper.java
License:Open Source License
/** * static to reduce load//from ww w. j a v a2 s .c o m * * @param project * object * @return a GoobiCollection of the following structure: GoobiCollection 1-n * representing the steps each step has the following properties @ * stepTitle, stepOrder, * stepCount,stepImageCount,totalProcessCount,totalImageCount which * can get extracted by the IGoobiCollection Interface using the * getItem(<name>) method standard workflow of the project * according to the definition that only steps shared by all * processes are returned. The workflow order is returned according * to the average order return by a grouping by step title consider * workflow structure to be a prototype, it would probably make * things easier, to either assemble the underlying construction in * separate classes or to create a new class with these properties */ @SuppressWarnings("unchecked") public static synchronized List<StepInformation> getProjectWorkFlowOverview(Project project) { Long totalNumberOfProc = 0l; Long totalNumberOfImages = 0l; Session session = Helper.getHibernateSession(); Criteria critTotals = session.createCriteria(Process.class, "proc"); critTotals.add(Restrictions.eq("proc.template", Boolean.FALSE)); critTotals.add(Restrictions.eq("proc.project", project)); ProjectionList proList = Projections.projectionList(); proList.add(Projections.count("proc.id")); proList.add(Projections.sum("proc.sortHelperImages")); critTotals.setProjection(proList); List<Object> list = critTotals.list(); for (Object obj : list) { Object[] row = (Object[]) obj; totalNumberOfProc = (Long) row[FieldList.totalProcessCount.fieldLocation]; totalNumberOfImages = (Long) row[FieldList.totalImageCount.fieldLocation]; ; } proList = null; list = null; Criteria critSteps = session.createCriteria(Task.class); critSteps.createCriteria("process", "proc"); critSteps.addOrder(Order.asc("ordering")); critSteps.add(Restrictions.eq("proc.template", Boolean.FALSE)); critSteps.add(Restrictions.eq("proc.project", project)); proList = Projections.projectionList(); proList.add(Projections.groupProperty(("title"))); proList.add(Projections.count("id")); proList.add(Projections.avg("ordering")); critSteps.setProjection(proList); // now we have to discriminate the hits where the max number of hits // doesn't reach numberOfProcs // and extract a workflow, which is the workflow common for all // processes according to its titel // the position will be calculated by the average of 'reihenfolge' of // steps list = critSteps.list(); String title; Double averageStepOrder; Long numberOfSteps; Long numberOfImages; List<StepInformation> workFlow = new ArrayList<>(); for (Object obj : list) { Object[] row = (Object[]) obj; title = (String) (row[FieldList.stepName.fieldLocation]); numberOfSteps = (Long) (row[FieldList.stepCount.fieldLocation]); averageStepOrder = (Double) (row[FieldList.stepOrder.fieldLocation]); // in this step we only take the steps which are present in each of // the workflows if (numberOfSteps.equals(totalNumberOfProc)) { StepInformation newStep = new StepInformation(title, averageStepOrder); newStep.setNumberOfTotalImages(totalNumberOfImages.intValue()); newStep.setNumberOfTotalSteps(totalNumberOfProc.intValue()); workFlow.add(newStep); } } Criteria critStepDone = session.createCriteria(Task.class, "step"); critStepDone.createCriteria("process", "proc"); critStepDone.add(Restrictions.eq("step.processingStatus", TaskStatus.DONE.getValue())); critStepDone.add(Restrictions.eq("proc.template", Boolean.FALSE)); critStepDone.add(Restrictions.eq("proc.project", project)); ProjectionList proCount = Projections.projectionList(); proCount.add(Projections.groupProperty(("step.title"))); proCount.add(Projections.count("proc.id")); proCount.add(Projections.sum("proc.sortHelperImages")); critStepDone.setProjection(proCount); list = critStepDone.list(); for (Object obj : list) { Object[] row = (Object[]) obj; title = (String) (row[FieldList.stepName.fieldLocation]); numberOfSteps = (Long) (row[FieldList.stepCount.fieldLocation]); numberOfImages = (Long) (row[FieldList.imageCount.fieldLocation]); // getting from the workflow collection the collection which // represents step <title> // we only created one for each step holding the counts of processes for (StepInformation currentStep : workFlow) { if (currentStep.getTitle().equals(title)) { currentStep.setNumberOfStepsDone(numberOfSteps.intValue()); currentStep.setNumberOfImagesDone(numberOfImages.intValue()); } } } Comparator<StepInformation> comp = new compareWorkflowSteps(); Collections.sort(workFlow, comp); return workFlow; }
From source file:dk.teachus.backend.dao.hibernate.HibernateBookingDAO.java
License:Apache License
@Transactional(readOnly = true) public int getBookingCount(Period period) { DetachedCriteria c = DetachedCriteria.forClass(BookingImpl.class); c.add(Restrictions.eq("period", period)); c.setProjection(Projections.count("id")); int count = getCount(c); return count; }
From source file:edu.utah.further.core.data.hibernate.query.CustomProjections.java
License:Apache License
/** * Visits a collection expression./*from w w w . ja v a 2 s . c om*/ */ public static Projection countProjection(final String propertyName, final boolean distinct) { return distinct ? Projections.countDistinct(propertyName) : Projections.count(propertyName); }
From source file:fr.insalyon.creatis.vip.application.server.dao.hibernate.SimulationStatsData.java
License:Open Source License
@Override public List<String> getWorkflowsPerUser(List<String> workflowsId) throws WorkflowsDBDAOException { List<String> result = new ArrayList<String>(); try {//w ww . java2 s.c om Session session = sessionFactory.openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Workflow.class); criteria.add(Restrictions.in("id", workflowsId)); ProjectionList p = Projections.projectionList(); p.add(Projections.groupProperty("username")); p.add(Projections.property("username")); p.add(Projections.alias(Projections.count("status"), "nbWfls")); //p.add(Projections.count("status")); criteria.setProjection(p); criteria.addOrder(Order.desc("nbWfls")); List l = criteria.list(); session.getTransaction().commit(); session.close(); Iterator it = l.iterator(); while (it.hasNext()) { Object ob[] = (Object[]) it.next(); if (ob[0] != null && ob[1] != null) { result.add(String.valueOf(ob[0]) + "##" + String.valueOf(ob[2])); } } return result; } catch (HibernateException ex) { throw new WorkflowsDBDAOException(ex); } }
From source file:fr.insalyon.creatis.vip.application.server.dao.hibernate.SimulationStatsData.java
License:Open Source License
@Override public List<String> getApplications(List<String> workflowsId) throws WorkflowsDBDAOException { List<String> result = new ArrayList<String>(); try {//from w w w .j a va 2s . co m Session session = sessionFactory.openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Workflow.class); criteria.add(Restrictions.in("id", workflowsId)); ProjectionList p = Projections.projectionList(); p.add(Projections.groupProperty("application")); p.add(Projections.property("application")); p.add(Projections.alias(Projections.count("status"), "nbWfls")); criteria.setProjection(p); criteria.setProjection(p); criteria.addOrder(Order.desc("nbWfls")); List l = criteria.list(); session.getTransaction().commit(); session.close(); Iterator it = l.iterator(); while (it.hasNext()) { Object ob[] = (Object[]) it.next(); if (ob[0] != null && ob[1] != null) { result.add(String.valueOf(ob[0]) + "##" + String.valueOf(ob[2])); } } return result; } catch (HibernateException ex) { throw new WorkflowsDBDAOException(ex); } //System.out.println("getApplications, first result is " + result.get(0).toString()); }
From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java
private Integer absentPersonCount(Integer roadOperationId) { /* Get Count of Absent Persons */ Criteria criteriaAssignedPersons = this.hibernateTemplate.getSessionFactory().getCurrentSession() .createCriteria(AssignedPersonDO.class, "a"); List<Integer> teamIds = getTeamIdsForRoadOp(roadOperationId); if (teamIds != null && teamIds.size() > 0) criteriaAssignedPersons.add(Restrictions.in("a.assignedPersonKey.team.teamId", teamIds)); criteriaAssignedPersons.add(Restrictions.eq("a.attended", "n").ignoreCase()); criteriaAssignedPersons.setProjection(Projections.count("a.attended")); criteriaAssignedPersons.setFetchMode("a", FetchMode.LAZY); Iterator iterator = criteriaAssignedPersons.list().iterator(); Integer AbsentMembersCount = (Integer) iterator.next(); criteriaAssignedPersons.setFlushMode(FlushMode.ALWAYS); return AbsentMembersCount; }
From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java
private Integer absentPersonTeamCount(Integer teamId) { /* Get Count of Absent Persons */ Criteria criteriaAssignedPersons = this.hibernateTemplate.getSessionFactory().getCurrentSession() .createCriteria(AssignedPersonDO.class, "a"); criteriaAssignedPersons.add(Restrictions.eq("a.assignedPersonKey.team.teamId", teamId)); criteriaAssignedPersons.add(Restrictions.eq("a.attended", "n").ignoreCase()); criteriaAssignedPersons.setProjection(Projections.count("a.attended")); criteriaAssignedPersons.setFetchMode("a", FetchMode.LAZY); Iterator iterator = criteriaAssignedPersons.list().iterator(); Integer AbsentMembersCount = (Integer) iterator.next(); criteriaAssignedPersons.setFlushMode(FlushMode.ALWAYS); return AbsentMembersCount; }
From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java
/*************************** * UR-057 //from w ww . j av a 2s . c o m *********************/ private Integer absentPersonTypeCount(Integer roadOperationId, String personType) { /* Get Count of Absent Persons */ Criteria criteriaAssignedPersons = this.hibernateTemplate.getSessionFactory().getCurrentSession() .createCriteria(AssignedPersonDO.class, "a"); List<Integer> teamIds = getTeamIdsForRoadOp(roadOperationId); if (teamIds != null && teamIds.size() > 0) { criteriaAssignedPersons.add(Restrictions.in("a.assignedPersonKey.team.teamId", teamIds)); criteriaAssignedPersons.add(Restrictions.eq("a.assignedPersonKey.personType.personTypeId", personType)); } criteriaAssignedPersons.add(Restrictions.eq("a.attended", "n").ignoreCase()); criteriaAssignedPersons.setProjection(Projections.count("a.attended")); criteriaAssignedPersons.setFetchMode("a", FetchMode.LAZY); Iterator iterator = criteriaAssignedPersons.list().iterator(); Integer AbsentPersonTypeCount = (Integer) iterator.next(); criteriaAssignedPersons.setFlushMode(FlushMode.ALWAYS); return AbsentPersonTypeCount; }