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:org.eurocarbdb.resourcesdb.io.HibernateAccess.java

License:Open Source License

@SuppressWarnings("unchecked")
public static List<Monosaccharide> getMonosaccharideListByAliasName(String aliasname, GlycanNamescheme scheme) {
    List<Monosaccharide> msList = null;
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    Transaction tx = session.beginTransaction();
    try {/*from  ww  w  .j  ava2s .c  o m*/
        //*** prepare query: ***
        Criteria query = session.createCriteria(Monosaccharide.class);
        query.createAlias("synonyms", "alias");
        //*** add restrictions: ***
        Conjunction monoJunc = Restrictions.conjunction();
        query.add(monoJunc);
        if (scheme == null || scheme.isCaseSensitive()) {
            monoJunc.add(Restrictions.like("alias.name", aliasname));
        } else {
            monoJunc.add(Restrictions.ilike("alias.name", aliasname));
        }
        if (scheme != null && !scheme.equals(GlycanNamescheme.AUTO)) {
            monoJunc.add(Restrictions.eq("alias.nameschemeStr", scheme.name()));
        }
        //*** add "distinct": ***
        query.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        //*** perform query: ***
        msList = (List<Monosaccharide>) query.list();
    } catch (Exception e) {
        tx.rollback();
    }
    return (msList);
}

From source file:org.fornax.cartridges.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java

License:Apache License

private Criterion makeCriterion(ConditionalCriteria crit) {
    if (crit == null) {
        return null;
    }/*from w  w  w.ja v a  2  s  .  c o  m*/

    ConditionalCriteria.Operator operator = crit.getOperator();
    if (Operator.Equal.equals(operator)) {
        return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.IgnoreCaseEqual.equals(operator)) {
        return Restrictions.eq(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant())
                .ignoreCase();
    } else if (Operator.LessThan.equals(operator)) {
        return Restrictions.lt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.LessThanOrEqual.equals(operator)) {
        return Restrictions.le(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.GreatThan.equals(operator)) {
        return Restrictions.gt(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.GreatThanOrEqual.equals(operator)) {
        return Restrictions.ge(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.Like.equals(operator)) {
        return Restrictions.like(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.IgnoreCaseLike.equals(operator)) {
        return Restrictions.ilike(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant());
    } else if (Operator.IsNull.equals(operator)) {
        return Restrictions.isNull(makePathWithAlias(crit.getPropertyFullName()));
    } else if (Operator.IsNotNull.equals(operator)) {
        return Restrictions.isNotNull(makePathWithAlias(crit.getPropertyFullName()));
    } else if (Operator.IsEmpty.equals(operator)) {
        return Restrictions.isEmpty(makePathWithAlias(crit.getPropertyFullName()));
    } else if (Operator.IsNotEmpty.equals(operator)) {
        return Restrictions.isNotEmpty(makePathWithAlias(crit.getPropertyFullName()));
    } else if (Operator.Not.equals(operator)) {
        return Restrictions.not(makeCriterion((ConditionalCriteria) crit.getFirstOperant()));
    } else if (Operator.Or.equals(operator) && crit.getFirstOperant() instanceof List<?>) {
        Disjunction disj = Restrictions.disjunction();
        List<?> disjList = (List<?>) crit.getFirstOperant();
        for (Object disjPart : disjList) {
            disj.add(makeCriterion((ConditionalCriteria) disjPart));
        }
        return disj;
    } else if (Operator.Or.equals(operator)) {
        return Restrictions.or(makeCriterion((ConditionalCriteria) crit.getFirstOperant()),
                makeCriterion((ConditionalCriteria) crit.getSecondOperant()));
    } else if (Operator.And.equals(operator) && crit.getFirstOperant() instanceof List<?>) {
        Conjunction conj = Restrictions.conjunction();
        List<?> conjList = (List<?>) crit.getFirstOperant();
        for (Object conjPart : conjList) {
            conj.add(makeCriterion((ConditionalCriteria) conjPart));
        }
        return conj;
    } else if (Operator.And.equals(operator)) {
        return Restrictions.and(makeCriterion((ConditionalCriteria) crit.getFirstOperant()),
                makeCriterion((ConditionalCriteria) crit.getSecondOperant()));
    } else if (Operator.In.equals(operator)) {
        if (crit.getFirstOperant() instanceof Collection<?>) {
            return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()),
                    (Collection<?>) crit.getFirstOperant());
        } else {
            return Restrictions.in(makePathWithAlias(crit.getPropertyFullName()),
                    (Object[]) crit.getFirstOperant());
        }
    } else if (Operator.Between.equals(operator)) {
        return Restrictions.between(makePathWithAlias(crit.getPropertyFullName()), crit.getFirstOperant(),
                crit.getSecondOperant());
    } else if (Operator.DistinctRoot.equals(operator)) {
        realDistinctRoot = true;
        return null;
    } else if (Operator.ProjectionRoot.equals(operator)) {
        resultTransformer = Criteria.PROJECTION;
        return null;
    } else if (Operator.EqualProperty.equals(operator)) {
        return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()),
                (String) crit.getFirstOperant());
    } else if (Operator.LessThanProperty.equals(operator)) {
        return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()),
                (String) crit.getFirstOperant());
    } else if (Operator.LessThanOrEqualProperty.equals(operator)) {
        return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()),
                (String) crit.getFirstOperant());
    } else if (Operator.GreatThanProperty.equals(operator)) {
        return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()),
                (String) crit.getFirstOperant());
    } else if (Operator.GreatThanOrEqualProperty.equals(operator)) {
        return Restrictions.eqProperty(makePathWithAlias(crit.getPropertyFullName()),
                (String) crit.getFirstOperant());
    } else {
        return null;
    }
}

From source file:org.geomajas.layer.hibernate.CriteriaVisitor.java

License:Open Source License

/** {@inheritDoc} */
@Override
public Object visit(ExcludeFilter filter, Object userData) {
    return Restrictions.not(Restrictions.conjunction());
}

From source file:org.geomajas.layer.hibernate.CriteriaVisitor.java

License:Open Source License

/** {@inheritDoc} */
@Override
public Object visit(IncludeFilter filter, Object userData) {
    return Restrictions.conjunction();
}

From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java

License:Open Source License

/**
 * Filter processes for steps name with given status.
 *
 * @param inStatus//from  w ww. j a v a2  s . c  o  m
 *            {@link TaskStatus} of searched step
 * @param parameters
 *            part of filter string to use
 */
protected static void filterStepName(Conjunction con, String parameters, TaskStatus inStatus, boolean negate,
        String prefix) {
    if (con == null) {
        con = Restrictions.conjunction();
    }
    if (!negate) {
        con.add(Restrictions.and(Restrictions.like(prefix + "title", "%" + parameters + "%"),
                Restrictions.eq(prefix + "processingStatus", inStatus.getValue())));
    } else {
        con.add(Restrictions.not(Restrictions.and(Restrictions.like(prefix + "title", "%" + parameters + "%"),
                Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))));
    }
}

From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java

License:Open Source License

/**
 * Filter processes for steps name with given status.
 *
 *//*from   www  .j a v  a  2  s.c o m*/
protected static void filterAutomaticSteps(Conjunction con, String tok, boolean flagSteps) {
    if (con == null) {
        con = Restrictions.conjunction();
    }
    if (!flagSteps) {
        if (tok.substring(tok.indexOf(":") + 1).equalsIgnoreCase("true")) {
            con.add(Restrictions.eq("steps.typeAutomatic", true));
        } else {
            con.add(Restrictions.eq("steps.typeAutomatic", false));
        }
    } else {
        if (tok.substring(tok.indexOf(":") + 1).equalsIgnoreCase("true")) {
            con.add(Restrictions.eq("typeAutomatic", true));
        } else {
            con.add(Restrictions.eq("typeAutomatic", false));
        }
    }
}

From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java

License:Open Source License

/**
 * Filter processes for done steps min./*from  ww  w .j a  va  2 s  .c  o  m*/
 *
 * @param parameters
 *            part of filter string to use
 * @param inStatus
 *            {@link TaskStatus} of searched step
 */
protected static void filterStepMin(Conjunction con, String parameters, TaskStatus inStatus, boolean negate,
        String prefix) {
    if (con == null) {
        con = Restrictions.conjunction();
    }
    if (!negate) {
        con.add(Restrictions.and(Restrictions.ge(prefix + "ordering", FilterHelper.getStepStart(parameters)),
                Restrictions.eq(prefix + "processingStatus", inStatus.getValue())));
    } else {
        con.add(Restrictions.not(
                Restrictions.and(Restrictions.ge(prefix + "ordering", FilterHelper.getStepStart(parameters)),
                        Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))));
    }
}

From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java

License:Open Source License

/**
 * Filter processes for done steps max./*w  w w.  j a  va2  s  .c  o  m*/
 *
 * @param parameters
 *            part of filter string to use
 * @param inStatus
 *            {@link TaskStatus} of searched step
 */
protected static void filterStepMax(Conjunction con, String parameters, TaskStatus inStatus, boolean negate,
        String prefix) {
    if (con == null) {
        con = Restrictions.conjunction();
    }
    if (!negate) {
        con.add(Restrictions.and(Restrictions.le(prefix + "ordering", FilterHelper.getStepEnd(parameters)),
                Restrictions.eq(prefix + "processingStatus", inStatus.getValue())));
    } else {
        con.add(Restrictions
                .not(Restrictions.and(Restrictions.le(prefix + "ordering", FilterHelper.getStepEnd(parameters)),
                        Restrictions.eq(prefix + "processingStatus", inStatus.getValue()))));
    }
}

From source file:org.goobi.production.flow.statistics.hibernate.FilterHelper.java

License:Open Source License

/**
 * This method builds a criteria depending on a filter string and some other
 * parameters passed on along the initial criteria. The filter is parsed and
 * depending on which data structures are used for applying filtering
 * restrictions conjunctions are formed and collect the restrictions and
 * then will be applied on the corresponding criteria. A criteria is only
 * added if needed for the presence of filters applying to it.
 *
 * @param inFilter/* ww w.jav  a2  s  . c  o m*/
 *            String
 * @param crit
 *            PaginatingCriteria object
 * @param isTemplate
 *            Boolean
 * @param returnParameters
 *            Object containing values which need to be set and returned to
 *            UserDefinedFilter
 * @param userAssignedStepsOnly
 *            Boolean
 * @param stepOpenOnly
 *            boolean
 * @return String used to pass on error messages about errors in the filter
 *         expression
 */
public static String criteriaBuilder(Session session, String inFilter, PaginatingCriteria crit,
        Boolean isTemplate, Parameters returnParameters, Boolean stepOpenOnly, Boolean userAssignedStepsOnly,
        boolean clearSession) {

    if (ConfigCore.getBooleanParameter("DatabaseAutomaticRefreshList", true) && clearSession) {
        session.clear();
    }
    // for ordering the lists there are some
    // criteria, which needs to be added even no
    // restrictions apply, to avoid multiple analysis
    // of the criteria it is only done here once and
    // to set flags which are subsequently used
    Boolean flagSteps = false;
    Boolean flagProcesses = false;
    @SuppressWarnings("unused")
    Boolean flagSetCritProjects = false;
    String filterPrefix = "";
    if (crit.getClassName().equals(Process.class.getName())) {
        flagProcesses = true;
        filterPrefix = "steps.";
    }

    if (crit.getClassName().equals(Task.class.getName())) {
        flagSteps = true;
    }

    // keeping a reference to the passed criteria
    Criteria inCrit = crit;
    @SuppressWarnings("unused")
    Criteria critProject = null;
    Criteria critProcess = null;

    // to collect and return feedback about erroneous use of filter
    // expressions
    String message = "";

    StrTokenizer tokenizer = new StrTokenizer(inFilter, ' ', '\"');

    // conjunctions collecting conditions
    Conjunction conjWorkPiece = null;
    Conjunction conjProjects = null;
    Conjunction conjSteps = null;
    Conjunction conjProcesses = null;
    Conjunction conjTemplates = null;
    Conjunction conjUsers = null;
    Conjunction conjProcessProperties = null;
    Conjunction conjBatches = null;

    // this is needed if we filter processes
    if (flagProcesses) {
        conjProjects = Restrictions.conjunction();
        limitToUserAccessRights(conjProjects);
        // in case nothing is set here it needs to be removed again
        // happens if user has admin rights
        if (conjProjects.toString().equals("()")) {
            conjProjects = null;
            flagSetCritProjects = true;
        }
    }

    // this is needed if we filter steps
    if (flagSteps) {
        conjSteps = Restrictions.conjunction();
        limitToUserAssignedSteps(conjSteps, stepOpenOnly, userAssignedStepsOnly);
        // in case nothing is set here conjunction needs to be set to null
        // again
        if (conjSteps.toString().equals("()")) {
            conjSteps = null;
        }
    }

    // this is needed for the template filter (true) and the undefined
    // processes filter (false) in any other case it needs to be null
    if (isTemplate != null) {
        conjProcesses = Restrictions.conjunction();
        if (!isTemplate) {
            conjProcesses.add(Restrictions.eq("template", Boolean.FALSE));
        } else {
            conjProcesses.add(Restrictions.eq("template", Boolean.TRUE));
        }
    }

    // this is needed for evaluating a filter string
    while (tokenizer.hasNext()) {
        String tok = tokenizer.nextToken().trim();
        String tokLowerCase = tok.toLowerCase(Locale.GERMANY);

        if (tokLowerCase.startsWith(FilterString.PROCESSPROPERTY)
                || tokLowerCase.startsWith(FilterString.PROZESSEIGENSCHAFT)) {
            if (conjProcessProperties == null) {
                conjProcessProperties = Restrictions.conjunction();
            }
            FilterHelper.filterProcessProperty(conjProcessProperties, tok, false);
        }
        // search over steps
        // original filter, is left here for compatibility reason
        // doesn't fit into new keyword scheme
        else if (tokLowerCase.startsWith(FilterString.STEP) || tokLowerCase.startsWith(FilterString.SCHRITT)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + createHistoricFilter(conjSteps, tok, flagSteps);

        } else if (tokLowerCase.startsWith(FilterString.STEPINWORK)
                || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, false,
                    filterPrefix));

            // new keyword stepLocked implemented
        } else if (tokLowerCase.startsWith(FilterString.STEPLOCKED)
                || tokLowerCase.startsWith(FilterString.SCHRITTINARBEIT)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, false,
                    filterPrefix));

            // new keyword stepOpen implemented
        } else if (tokLowerCase.startsWith(FilterString.STEPOPEN)
                || tokLowerCase.startsWith(FilterString.SCHRITTOFFEN)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, false,
                    filterPrefix));

            // new keyword stepDone implemented
        } else if (tokLowerCase.startsWith(FilterString.STEPDONE)
                || tokLowerCase.startsWith(FilterString.SCHRITTABGESCHLOSSEN)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, false,
                    filterPrefix));

            // new keyword stepDoneTitle implemented, replacing so far
            // undocumented
        } else if (tokLowerCase.startsWith(FilterString.STEPDONETITLE)
                || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTTITEL)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            String stepTitel = tok.substring(tok.indexOf(":") + 1);
            FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, false, filterPrefix);

        } else if ((tokLowerCase.startsWith(FilterString.STEPDONEUSER)
                || tokLowerCase.startsWith(FilterString.ABGESCHLOSSENERSCHRITTBENUTZER))
                && ConfigCore.getBooleanParameter("withUserStepDoneSearch")) {
            if (conjUsers == null) {
                conjUsers = Restrictions.conjunction();
            }
            FilterHelper.filterStepDoneUser(conjUsers, tok);
        } else if (tokLowerCase.startsWith(FilterString.STEPAUTOMATIC)
                || tokLowerCase.startsWith(FilterString.SCHRITTAUTOMATISCH)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            FilterHelper.filterAutomaticSteps(conjSteps, tok, flagSteps);
        } else if (tokLowerCase.startsWith(FilterString.PROJECT)
                || tokLowerCase.startsWith(FilterString.PROJEKT)) {
            if (conjProjects == null) {
                conjProjects = Restrictions.conjunction();
            }
            FilterHelper.filterProject(conjProjects, tok, false);

        } else if (tokLowerCase.startsWith(FilterString.TEMPLATE)
                || tokLowerCase.startsWith(FilterString.VORLAGE)) {
            if (conjTemplates == null) {
                conjTemplates = Restrictions.conjunction();
            }
            FilterHelper.filterScanTemplate(conjTemplates, tok, false);

        } else if (tokLowerCase.startsWith(FilterString.ID)) {
            if (conjProcesses == null) {
                conjProcesses = Restrictions.conjunction();
            }
            FilterHelper.filterIds(conjProcesses, tok);

        } else if (tokLowerCase.startsWith(FilterString.PROCESS)
                || tokLowerCase.startsWith(FilterString.PROZESS)) {
            if (conjProcesses == null) {
                conjProcesses = Restrictions.conjunction();
            }
            conjProcesses
                    .add(Restrictions.like("title", "%" + "proc:" + tok.substring(tok.indexOf(":") + 1) + "%"));
        } else if (tokLowerCase.startsWith(FilterString.BATCH)
                || tokLowerCase.startsWith(FilterString.GRUPPE)) {
            if (conjBatches == null) {
                conjBatches = Restrictions.conjunction();
            }
            int value = Integer.parseInt(tok.substring(tok.indexOf(":") + 1));
            conjBatches.add(Restrictions.eq("bat.id", value));
        } else if (tokLowerCase.startsWith(FilterString.WORKPIECE)
                || tokLowerCase.startsWith(FilterString.WERKSTUECK)) {
            if (conjWorkPiece == null) {
                conjWorkPiece = Restrictions.conjunction();
            }
            FilterHelper.filterWorkpiece(conjWorkPiece, tok, false);

        } else if (tokLowerCase.startsWith("-" + FilterString.PROCESSPROPERTY)
                || tokLowerCase.startsWith("-" + FilterString.PROZESSEIGENSCHAFT)) {
            if (conjProcessProperties == null) {
                conjProcessProperties = Restrictions.conjunction();
            }
            FilterHelper.filterProcessProperty(conjProcessProperties, tok, true);
        }

        else if (tokLowerCase.startsWith("-" + FilterString.STEPINWORK)
                || tokLowerCase.startsWith("-" + FilterString.SCHRITTINARBEIT)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.INWORK, true,
                    filterPrefix));

            // new keyword stepLocked implemented
        } else if (tokLowerCase.startsWith("-" + FilterString.STEPLOCKED)
                || tokLowerCase.startsWith("-" + FilterString.SCHRITTGESPERRT)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.LOCKED, true,
                    filterPrefix));

            // new keyword stepOpen implemented
        } else if (tokLowerCase.startsWith("-" + FilterString.STEPOPEN)
                || tokLowerCase.startsWith("-" + FilterString.SCHRITTOFFEN)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.OPEN, true,
                    filterPrefix));

            // new keyword stepDone implemented
        } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONE)
                || tokLowerCase.startsWith("-" + FilterString.SCHRITTABGESCHLOSSEN)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            message = message + (createStepFilters(returnParameters, conjSteps, tok, TaskStatus.DONE, true,
                    filterPrefix));

            // new keyword stepDoneTitle implemented, replacing so far
            // undocumented
        } else if (tokLowerCase.startsWith("-" + FilterString.STEPDONETITLE)
                || tokLowerCase.startsWith("-" + FilterString.ABGESCHLOSSENERSCHRITTTITEL)) {
            if (conjSteps == null) {
                conjSteps = Restrictions.conjunction();
            }
            String stepTitel = tok.substring(tok.indexOf(":") + 1);
            FilterHelper.filterStepName(conjSteps, stepTitel, TaskStatus.DONE, true, filterPrefix);

        } else if (tokLowerCase.startsWith("-" + FilterString.PROJECT)
                || tokLowerCase.startsWith("-" + FilterString.PROJEKT)) {
            if (conjProjects == null) {
                conjProjects = Restrictions.conjunction();
            }
            FilterHelper.filterProject(conjProjects, tok, true);

        } else if (tokLowerCase.startsWith("-" + FilterString.TEMPLATE)
                || tokLowerCase.startsWith("-" + FilterString.VORLAGE)) {
            if (conjTemplates == null) {
                conjTemplates = Restrictions.conjunction();
            }
            FilterHelper.filterScanTemplate(conjTemplates, tok, true);

        } else if (tokLowerCase.startsWith("-" + FilterString.WORKPIECE)
                || tokLowerCase.startsWith("-" + FilterString.WERKSTUECK)) {
            if (conjWorkPiece == null) {
                conjWorkPiece = Restrictions.conjunction();
            }
            FilterHelper.filterWorkpiece(conjWorkPiece, tok, true);

        } else if (tokLowerCase.startsWith("-")) {

            if (conjProcesses == null) {
                conjProcesses = Restrictions.conjunction();
            }

            conjProcesses.add(Restrictions.not(Restrictions.like("title", "%" + tok.substring(1) + "%")));

        } else {

            /* standard-search parameter */
            if (conjProcesses == null) {
                conjProcesses = Restrictions.conjunction();
            }

            conjProcesses.add(IlikeExpression.ilike("title", "*" + tok + "*", '!'));
        }
    }

    if (conjProcesses != null || flagSteps) {
        if (!flagProcesses) {

            critProcess = crit.createCriteria("process", "proc");

            if (conjProcesses != null) {
                critProcess.add(conjProcesses);
            }
        } else {
            if (conjProcesses != null) {
                inCrit.add(conjProcesses);
            }
        }
    }

    if (flagSteps) {

        critProject = critProcess.createCriteria("project", "proj");

        if (conjProjects != null) {
            inCrit.add(conjProjects);
        }
    } else {
        inCrit.createCriteria("project", "proj");
        if (conjProjects != null) {
            inCrit.add(conjProjects);
        }
    }

    if (conjSteps != null) {
        if (!flagSteps) {
            crit.createCriteria("tasks", "steps");
            crit.add(conjSteps);
        } else {
            inCrit.add(conjSteps);
        }
    }

    if (conjTemplates != null) {
        if (flagSteps) {
            critProcess.createCriteria("templates", "vorl");
            critProcess.createAlias("vorl.eigenschaften", "vorleig");
            critProcess.add(conjTemplates);
        } else {
            crit.createCriteria("templates", "vorl");
            crit.createAlias("vorl.eigenschaften", "vorleig");
            inCrit.add(conjTemplates);
        }
    }

    if (conjProcessProperties != null) {
        if (flagSteps) {
            critProcess.createAlias("proc.eigenschaften", "prozesseig");
            critProcess.add(conjProcessProperties);
        } else {

            inCrit.createAlias("properties", "prozesseig");
            inCrit.add(conjProcessProperties);
        }
    }

    if (conjWorkPiece != null) {
        if (flagSteps) {
            critProcess.createCriteria("workpiece", "werk");
            critProcess.createAlias("werk.eigenschaften", "werkeig");
            critProcess.add(conjWorkPiece);
        } else {
            inCrit.createCriteria("workpiece", "werk");
            inCrit.createAlias("werk.eigenschaften", "werkeig");
            inCrit.add(conjWorkPiece);
        }
    }
    if (conjUsers != null) {
        if (flagSteps) {
            critProcess.createCriteria("processingUser", "processingUser");
            critProcess.add(conjUsers);
        } else {
            inCrit.createAlias("steps.processingUser", "processingUser");
            inCrit.add(conjUsers);
        }
    }
    if (conjBatches != null) {
        if (flagSteps) {
            critProcess.createCriteria("batches", "bat");
            critProcess.add(conjBatches);
        } else {
            crit.createCriteria("batches", "bat");
            inCrit.add(conjBatches);
        }
    }
    return message;
}

From source file:org.grails.orm.hibernate.query.AbstractHibernateCriterionAdapter.java

License:Apache License

protected void addAssociationQueryCriterionAdapters() {
    criterionAdaptors.put(DetachedAssociationCriteria.class, new CriterionAdaptor() {
        @Override//from   w  w  w .  j  a  v a2s.c  om
        public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Criterion criterion,
                String alias) {
            DetachedAssociationCriteria<?> existing = (DetachedAssociationCriteria<?>) criterion;
            if (alias == null)
                alias = existing.getAlias();
            alias = hibernateQuery.handleAssociationQuery(existing.getAssociation(), existing.getCriteria(),
                    alias);
            Junction conjunction = Restrictions.conjunction();
            applySubCriteriaToJunction(existing.getAssociation().getAssociatedEntity(), hibernateQuery,
                    existing.getCriteria(), conjunction, alias);
            return conjunction;
        }
    });
    criterionAdaptors.put(AssociationQuery.class, new CriterionAdaptor() {
        @Override
        public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Criterion criterion,
                String alias) {
            AssociationQuery existing = (AssociationQuery) criterion;
            Junction conjunction = Restrictions.conjunction();
            String newAlias = hibernateQuery.handleAssociationQuery(existing.getAssociation(),
                    existing.getCriteria().getCriteria());
            if (alias == null) {
                alias = newAlias;
            } else {
                alias += '.' + newAlias;
            }
            applySubCriteriaToJunction(existing.getAssociation().getAssociatedEntity(), hibernateQuery,
                    existing.getCriteria().getCriteria(), conjunction, alias);
            return conjunction;
        }
    });
}