Example usage for org.hibernate.criterion Restrictions conjunction

List of usage examples for org.hibernate.criterion Restrictions conjunction

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions conjunction.

Prototype

public static Conjunction conjunction() 

Source Link

Document

Group expressions together in a single conjunction (A and B and C...).

Usage

From source file:es.sm2.openppm.core.dao.MilestoneDAO.java

License:Open Source License

/**
 * Find milestones filter by projects and milestone type and dates
 * //from  w  w  w .j ava 2s. c om
 * @param projects
 * @param milestonetype 
 * @param milestonecategory 
 * @param until 
 * @param since 
 * @param milestonePending
 * @param property
 * @param order
 * @param joins
 * @return
 */
@SuppressWarnings("unchecked")
public List<Milestones> filter(List<Project> projects, Milestonetype milestonetype,
        Milestonecategory milestonecategory, Date since, Date until, String milestonePending, String property,
        String order, List<String> joins) {

    List<Milestones> list = new ArrayList<Milestones>();

    if (ValidateUtil.isNotNull(projects)) {

        Criteria crit = getSession().createCriteria(getPersistentClass());

        // Filter dates
        //
        if (since != null & until != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.between(Milestones.ACHIEVED, since, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.between(Milestones.ESTIMATEDDATE, since, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.between(Milestones.PLANNED, since, until))));
        } else if (since != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.ge(Milestones.ACHIEVED, since)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.ge(Milestones.ESTIMATEDDATE, since)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.ge(Milestones.PLANNED, since))));
        } else if (until != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.le(Milestones.ACHIEVED, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.le(Milestones.ESTIMATEDDATE, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.le(Milestones.PLANNED, until))));
        }

        // Filter by projects
        //
        crit.add(Restrictions.in(Milestones.PROJECT, projects));

        // Filter by milestone type
        //
        if (milestonetype != null) {
            crit.add(Restrictions.eq(Milestones.MILESTONETYPE, milestonetype));
        }

        // Filter by milestone category
        //
        if (milestonecategory != null) {
            crit.add(Restrictions.eq(Milestones.MILESTONECATEGORY, milestonecategory));
        }

        // Filter by pendings 
        //
        if (MilestonePending.YES.name().equals(milestonePending)) {
            crit.add(Restrictions.isNull(Milestones.ACHIEVED));
        } else if (MilestonePending.NO.name().equals(milestonePending)) {
            crit.add(Restrictions.isNotNull(Milestones.ACHIEVED));
        }

        // Left join milestone type for null relation
        crit.createCriteria(Milestones.MILESTONETYPE, CriteriaSpecification.LEFT_JOIN);

        // Joins
        addJoins(crit, joins);

        // Orders
        addOrder(crit, property, order);

        list = crit.list();
    }

    return list;
}

From source file:es.sm2.openppm.core.dao.MilestoneDAO.java

License:Open Source License

/**
 * Find milestones filter by project and activity and dates
 * // www.  j  a  v a 2  s  . c o m
 * @param project
 * @param projectactivity
 * @param since
 * @param until
 * @param hasCategory
 * @param property
 * @param order
 * @param joins
 * @return
 */
@SuppressWarnings("unchecked")
public List<Milestones> filter(Project project, Projectactivity projectactivity, Date since, Date until,
        boolean hasCategory, String property, String order, List<String> joins) {

    List<Milestones> list = new ArrayList<Milestones>();

    if (project != null) {

        Criteria crit = getSession().createCriteria(getPersistentClass());

        // Filter dates
        //
        if (since != null & until != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.between(Milestones.ACHIEVED, since, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.between(Milestones.ESTIMATEDDATE, since, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.between(Milestones.PLANNED, since, until))));
        } else if (since != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.ge(Milestones.ACHIEVED, since)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.ge(Milestones.ESTIMATEDDATE, since)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.ge(Milestones.PLANNED, since))));
        } else if (until != null) {

            crit.add(Restrictions.disjunction()
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ACHIEVED))
                            .add(Restrictions.le(Milestones.ACHIEVED, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.ESTIMATEDDATE))
                            .add(Restrictions.le(Milestones.ESTIMATEDDATE, until)))
                    .add(Restrictions.conjunction().add(Restrictions.isNotNull(Milestones.PLANNED))
                            .add(Restrictions.le(Milestones.PLANNED, until))));
        }

        // Filter by project
        //
        if (project != null) {
            crit.add(Restrictions.eq(Milestones.PROJECT, project));
        }

        // Filter by activity 
        //
        if (projectactivity != null) {
            crit.add(Restrictions.eq(Milestones.PROJECTACTIVITY, projectactivity));
        }

        // Filter by has category 
        //
        if (hasCategory) {
            crit.add(Restrictions.isNotNull(Milestones.MILESTONECATEGORY));
        }

        // Joins
        addJoins(crit, joins);

        // Orders
        addOrder(crit, property, order);

        list = crit.list();
    }

    return list;
}

From source file:es.sm2.openppm.core.dao.TimesheetDAO.java

License:Open Source License

/**
 * Find time sheet affected for update date out
 * /* ww w .ja v a 2 s .  co  m*/
 * @param teammember
 * @param newDateOut
 * @return
 */
@SuppressWarnings("unchecked")
public List<Timesheet> timeSheetsForUpdateOut(Teammember teammember, Date newDateOut) {

    Criteria crit = getSession().createCriteria(getPersistentClass())
            .add(Restrictions.eq(Timesheet.PROJECTACTIVITY, teammember.getProjectactivity()))
            .add(Restrictions.eq(Timesheet.EMPLOYEE, teammember.getEmployee()))
            .add(Restrictions.conjunction()
                    .add(Restrictions.le(Timesheet.INITDATE, DateUtil.getFirstWeekDay(teammember.getDateOut())))
                    .add(Restrictions.ge(Timesheet.ENDDATE, DateUtil.getLastWeekDay(newDateOut))));

    return crit.list();
}

From source file:es.sm2.openppm.core.dao.TimesheetDAO.java

License:Open Source License

/**
 * Find time sheet affected for update date in
 * /*from  w  w  w.  j av a  2  s  . co  m*/
 * @param teammember
 * @param newDateOut
 * @return
 */
@SuppressWarnings("unchecked")
public List<Timesheet> timeSheetsForUpdateIn(Teammember teammember, Date newDateIn) {

    Criteria crit = getSession().createCriteria(getPersistentClass())
            .add(Restrictions.eq(Timesheet.PROJECTACTIVITY, teammember.getProjectactivity()))
            .add(Restrictions.eq(Timesheet.EMPLOYEE, teammember.getEmployee()))
            .add(Restrictions.conjunction()
                    .add(Restrictions.ge(Timesheet.INITDATE, DateUtil.getFirstWeekDay(teammember.getDateIn())))
                    .add(Restrictions.le(Timesheet.ENDDATE, DateUtil.getLastWeekDay(newDateIn))));

    return crit.list();
}

From source file:es.sm2.openppm.core.model.impl.Projectfollowup.java

License:Open Source License

public Integer getDaysToDate() throws Exception {

    if (daysToDate == null) {

        ProjectLogic projectLogic = new ProjectLogic(settings, null);
        ProjectActivityLogic activityLogic = new ProjectActivityLogic(settings, null);
        ProjectCalendarExceptionsLogic projectCalendarExceptionsLogic = new ProjectCalendarExceptionsLogic();
        ProjectcalendarLogic projectCalendarLogic = new ProjectcalendarLogic();

        Project project = projectLogic.findByFollowup(this);
        Projectactivity rootAct = project.getRootActivity();

        Projectcalendar projectCalendar = projectCalendarLogic.consCalendarByProject(project);
        List<Projectcalendarexceptions> exceptions = projectCalendarExceptionsLogic
                .findByRelation(Projectcalendarexceptions.PROJECTCALENDAR, projectCalendar);

        List<Date> exceptionDates = ProjectCalendarExceptionsLogic.getExceptionDates(exceptions);

        Junction restrictions = Restrictions.conjunction()
                .add(Restrictions.eq(Projectactivity.PROJECT, project))
                .add(Restrictions.isNull(Projectactivity.ACTUALINITDATE));

        if (rootAct != null && rootAct.getActualInitDate() != null && rootAct.getPlanInitDate() != null
                && activityLogic.rowCount(restrictions) == 0
                && rootAct.getActualInitDate().before(rootAct.getPlanInitDate())) {

            daysToDate = ValidateUtil.calculateWorkDays(rootAct.getActualInitDate(), getFollowupDate(),
                    exceptionDates);/*  w  w w .  jav  a 2 s. c o m*/
        } else if (rootAct != null && rootAct.getPlanInitDate() != null) {
            daysToDate = ValidateUtil.calculateWorkDays(rootAct.getPlanInitDate(), getFollowupDate(),
                    exceptionDates);
        } else {
            daysToDate = ValidateUtil.calculateWorkDays(project.getPlannedInitDate(), getFollowupDate(),
                    exceptionDates);
        }
    }

    return daysToDate;
}

From source file:eu.interedition.text.Name.java

License:Apache License

public static Set<Name> get(Session session, Set<Name> names) {
    final Set<Name> result = Sets.newHashSet();
    if (names.isEmpty()) {
        return result;
    }/*from w w  w.  j  ava  2 s.  c  o  m*/

    final Set<Name> toFind = Sets.newHashSet(names);
    final Disjunction or = Restrictions.disjunction();
    for (Name name : toFind) {
        final Conjunction and = Restrictions.conjunction();
        and.add(Restrictions.eq("localName", name.getLocalName()));

        final URI ns = name.getNamespace();
        and.add(ns == null ? Restrictions.isNull("namespaceURI")
                : Restrictions.eq("namespaceURI", ns.toString()));

        or.add(and);
    }

    for (Name name : SQL.iterate(session.createCriteria(Name.class).add(or), Name.class)) {
        toFind.remove(name);
        result.add(name);
    }
    for (Name name : toFind) {
        result.add((Name) session.merge(name));
    }
    return result;
}

From source file:eu.interedition.text.query.AndQueryOperator.java

License:Apache License

@Override
Junction junction() {
    return Restrictions.conjunction();
}

From source file:gov.nih.nci.caarray.dao.SampleDaoImpl.java

License:BSD License

/**
 * {@inheritDoc}//w  ww  .j  av  a 2 s .  c o  m
 */
@SuppressWarnings({ "unchecked", "PMD" })
public <T extends AbstractBioMaterial> List<T> searchByCriteria(PageSortParams<T> params,
        BiomaterialSearchCriteria criteria) {
    Criteria c = getCurrentSession().createCriteria(AbstractBioMaterial.class);

    if (criteria.getExperiment() != null) {
        c.add(Restrictions.eq("experiment", criteria.getExperiment()));
    }

    if (!criteria.getNames().isEmpty()) {
        c.add(Restrictions.in("name", criteria.getNames()));
    }

    if (!criteria.getExternalIds().isEmpty()) {
        c.add(Restrictions.in("externalId", criteria.getExternalIds()));
    }

    if (!criteria.getBiomaterialClasses().isEmpty()) {
        // unfortunately due to a hibernate bug we have to explicitly specify discriminators
        // rather than being able to use classnames
        Set<String> discriminators = new HashSet<String>();
        for (Class<? extends AbstractBioMaterial> bmClass : criteria.getBiomaterialClasses()) {
            discriminators.add(getDiscriminator(bmClass));
        }
        c.add(Restrictions.in("class", discriminators));
    }

    if (!criteria.getAnnotationCriterions().isEmpty()) {
        Set<String> diseaseStates = new HashSet<String>();
        Set<String> tissueSites = new HashSet<String>();
        Set<String> cellTypes = new HashSet<String>();
        Set<String> materialTypes = new HashSet<String>();
        for (AnnotationCriterion ac : criteria.getAnnotationCriterions()) {
            if (ac.getCategory().getName().equals(ExperimentOntologyCategory.DISEASE_STATE.getCategoryName())) {
                diseaseStates.add(ac.getValue());
            } else if (ac.getCategory().getName()
                    .equals(ExperimentOntologyCategory.CELL_TYPE.getCategoryName())) {
                cellTypes.add(ac.getValue());
            } else if (ac.getCategory().getName()
                    .equals(ExperimentOntologyCategory.MATERIAL_TYPE.getCategoryName())) {
                materialTypes.add(ac.getValue());
            } else if (ac.getCategory().getName()
                    .equals(ExperimentOntologyCategory.ORGANISM_PART.getCategoryName())) {
                tissueSites.add(ac.getValue());
            }
        }

        if (!diseaseStates.isEmpty() || !tissueSites.isEmpty() || !cellTypes.isEmpty()
                || !materialTypes.isEmpty()) {
            Junction and = Restrictions.conjunction();
            addAnnotationCriterionValues(c, and, diseaseStates, "diseaseState", "ds");
            addAnnotationCriterionValues(c, and, tissueSites, "tissueSite", "ts");
            addAnnotationCriterionValues(c, and, materialTypes, "materialType", "mt");
            addAnnotationCriterionValues(c, and, cellTypes, "cellType", "ct");
            c.add(and);
        }
    }

    c.setFirstResult(params.getIndex());
    if (params.getPageSize() > 0) {
        c.setMaxResults(params.getPageSize());
    }
    c.addOrder(toOrder(params));
    return c.list();
}

From source file:gov.nih.nci.caintegrator.data.CaIntegrator2DaoImpl.java

License:BSD License

/**
 * {@inheritDoc}/*from www. j a  v a 2s .c o m*/
 */
@Override
@SuppressWarnings(UNCHECKED) // Hibernate operations are untyped
public List<SegmentData> findMatchingSegmentDatasByLocation(List<SegmentData> segmentDatasToMatch, Study study,
        Platform platform) {
    Criteria segmentDataCrit = getCurrentSession().createCriteria(SegmentData.class);
    Criteria arrayDataCrit = segmentDataCrit.createCriteria("arrayData");
    Criteria reporterListsCrit = arrayDataCrit.createCriteria("reporterLists");
    reporterListsCrit.add(Restrictions.eq(PLATFORM_ASSOCIATION, platform));
    arrayDataCrit.add(Restrictions.eq(STUDY_ASSOCIATION, study));
    Junction overallOrStatement = Restrictions.disjunction();
    for (SegmentData segmentData : segmentDatasToMatch) {
        ChromosomalLocation location = segmentData.getLocation();
        overallOrStatement.add(Restrictions.conjunction()
                .add(Restrictions.eq("Location.startPosition", location.getStartPosition()))
                .add(Restrictions.eq("Location.endPosition", location.getEndPosition())));
    }
    segmentDataCrit.add(overallOrStatement);
    return segmentDataCrit.list();
}

From source file:gov.nih.nci.caintegrator.data.CaIntegrator2DaoImpl.java

License:BSD License

/**
 * {@inheritDoc}//from  w w w  .  j av  a2  s  .com
 */
@Override
@SuppressWarnings(UNCHECKED) // Hibernate operations are untyped
public List<Gene> findGenesByLocation(String chromosome, Integer startPosition, Integer endPosition,
        GenomeBuildVersionEnum genomeBuildVersion) {
    String locStartPosition = "location.startPosition";
    String locEndPosition = "location.endPosition";
    Criteria geneLocationCriteria = getCurrentSession().createCriteria(GeneChromosomalLocation.class);
    // (gene.startPos <= startPosition && gene.endPos >= startPosition)
    //  || (gene.startPos >= lowerInput  && gene.startPos <= higherInput)
    Junction overallOrStatement = Restrictions.disjunction();
    overallOrStatement.add(Restrictions.conjunction().add(Restrictions.le(locStartPosition, startPosition))
            .add(Restrictions.ge(locEndPosition, startPosition)));
    overallOrStatement.add(Restrictions.conjunction().add(Restrictions.ge(locStartPosition, startPosition))
            .add(Restrictions.le(locStartPosition, endPosition)));
    geneLocationCriteria.add(overallOrStatement);
    geneLocationCriteria.add(getChromosomeRestriction(chromosome));
    geneLocationCriteria.createCriteria("geneLocationConfiguration")
            .add(Restrictions.eq("genomeBuildVersion", genomeBuildVersion));
    geneLocationCriteria.setProjection(Projections.property("geneSymbol"));
    List<String> geneSymbols = geneLocationCriteria.list();
    return geneSymbols.isEmpty() ? new ArrayList<Gene>()
            : getCurrentSession().createCriteria(Gene.class)
                    .setProjection(Projections.distinct(Projections.property(SYMBOL_ATTRIBUTE)))
                    .add(Restrictions.in(SYMBOL_ATTRIBUTE, geneSymbols)).addOrder(Order.asc(SYMBOL_ATTRIBUTE))
                    .list();
}