Example usage for org.hibernate.criterion DetachedCriteria add

List of usage examples for org.hibernate.criterion DetachedCriteria add

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria add.

Prototype

public DetachedCriteria add(Criterion criterion) 

Source Link

Document

Add a restriction

Usage

From source file:com.ephesoft.dcma.da.dao.hibernate.TableRuleInfoDaoImpl.java

License:Open Source License

/**
 * API to fetch TableRulesInfo by TableInfo
 * //  ww w.j  av a 2  s  .  c  om
 * @param tableInfo TableInfo
 * @return List<TableRuleInfo>
 */
@Override
public List<TableRuleInfo> getTableRulesInfoByTableInfo(TableInfo tableInfo) {

    LOGGER.info("TableInfo : " + tableInfo);
    DetachedCriteria criteria = criteria();
    criteria.add(Restrictions.eq(TABLE_INFO, tableInfo));

    return find(criteria);

}

From source file:com.ephesoft.dcma.da.dao.hibernate.TableRuleInfoDaoImpl.java

License:Open Source License

/**
 * API to fetch all TableRuleInfo by document type name and table name for a batch class.
 * //from  w ww  . j av a 2  s .  c om
 * @param batchClassIdentifer {@link String} batch class identifier
 * @param docTypeName {@link String} document type name
 * @param tableName {@link String} table name
 * @return List<TableRuleInfo> table rule info list
 */
@Override
public List<TableRuleInfo> getTableRulesInfo(final String batchClassIdentifer, final String docTypeName,
        final String tableName) {

    LOGGER.info("docTypeName  : " + docTypeName);
    DetachedCriteria criteria = criteria();
    criteria.createAlias("tableInfo", "tableInfo", JoinFragment.INNER_JOIN);
    criteria.add(Restrictions.eq("tableInfo.name", tableName));
    criteria.createAlias("tableInfo.docType", "docType", JoinFragment.INNER_JOIN);
    criteria.add(Restrictions.eq("docType.name", docTypeName));
    criteria.createAlias("docType.batchClass", "batchClass", JoinFragment.INNER_JOIN);
    criteria.add(Restrictions.eq("batchClass.identifier", batchClassIdentifer));
    return find(criteria);

}

From source file:com.ephesoft.dcma.da.dao.hibernate.TableRuleInfoDaoImpl.java

License:Open Source License

/**
 * API to retrieve list of all the table rules.
 * //from w  w w  .j ava2s .c  o  m
 * @return {@link List}< {@link TableRuleInfo}> The list of table rules.
 */
@Override
public List<TableRuleInfo> getAllTableRules() {
    DetachedCriteria criteria = criteria();
    criteria.add(Restrictions.isNull(TABLE_INFO));
    return find(criteria);
}

From source file:com.ephesoft.dcma.da.dao.hibernate.UserDaoImpl.java

License:Open Source License

/**
 * API to get User Information from user email ID.
 * //from  w  w  w .j  av a  2 s .  c o  m
 * @param emailId {@link String}
 */
@Override
public User getUser(String emailId) {
    LOGGER.info("Inside get User API");
    DetachedCriteria criteria = criteria();
    LOGGER.info("Adding criteria for fetching user for email Id :" + emailId);
    criteria.add(Restrictions.eq("email", emailId));
    return findSingle(criteria);
}

From source file:com.ephesoft.dcma.da.dao.hibernate.UserDaoImpl.java

License:Open Source License

/**
 * API to get User Information from batch class ID.
 * /*from   w  ww  .j  a v  a  2 s  .  c o  m*/
 * @param batchClassId {@link String}
 */
@Override
public User getUserByBatchClassId(String batchClassId) {
    LOGGER.info("Inside get User API");
    DetachedCriteria criteria = criteria();

    LOGGER.info("Adding criteria for fetching user for email Id :" + batchClassId);
    criteria.createAlias(BATCH_CLASS, BATCH_CLASS);
    criteria.add(Restrictions.eq(BATCH_CLASS_IDENTIFIER, batchClassId));
    return findSingle(criteria);
}

From source file:com.evolveum.midpoint.repo.sql.query.custom.ShadowQueryWithDisjunction.java

License:Apache License

@Override
public RQuery createQuery(ObjectQuery objectQuery, Class<? extends ObjectType> type,
        Collection<SelectorOptions<GetOperationOptions>> options, boolean countingObjects, Session session) {

    DetachedCriteria c1 = DetachedCriteria.forClass(ClassMapper.getHQLTypeClass(ShadowType.class), "s");
    c1.createCriteria("strings", "s1", JoinType.LEFT_OUTER_JOIN);

    ParsedQuery parsedQuery = parse(objectQuery);
    Conjunction conjunction = Restrictions.conjunction();
    conjunction//from w w  w.j  av a 2s  . c om
            .add(Restrictions.eq("resourceRef.targetOid", parsedQuery.refFilter.getValues().get(0).getOid()));
    Disjunction disjunction = Restrictions.disjunction();
    disjunction.add(createAttributeEq(parsedQuery.eqUidFilter,
            parsedQuery.eqUidFilter.getPath().lastNamed().getName()));
    disjunction.add(createAttributeEq(parsedQuery.eqNameFilter, SchemaConstantsGenerated.ICF_S_NAME));
    conjunction.add(disjunction);
    c1.add(conjunction);

    if (countingObjects) {
        c1.setProjection(Projections.countDistinct("s.oid"));
        return new RQueryCriteriaImpl(c1.getExecutableCriteria(session));
    }

    c1.setProjection(Projections.distinct(Projections.property("s.oid")));

    Criteria cMain = session.createCriteria(ClassMapper.getHQLTypeClass(ShadowType.class), "o");
    cMain.add(Subqueries.propertyIn("oid", c1));

    if (objectQuery != null && objectQuery.getPaging() != null) {
        cMain = updatePagingAndSorting(cMain, type, objectQuery.getPaging());
    }

    ProjectionList projections = Projections.projectionList();
    projections.add(Projections.property("fullObject"));
    projections.add(Projections.property("stringsCount"));
    projections.add(Projections.property("longsCount"));
    projections.add(Projections.property("datesCount"));
    projections.add(Projections.property("referencesCount"));
    projections.add(Projections.property("polysCount"));
    projections.add(Projections.property("booleansCount"));

    cMain.setProjection(projections);

    cMain.setResultTransformer(GetObjectResult.RESULT_TRANSFORMER);
    return new RQueryCriteriaImpl(cMain);
}

From source file:com.evolveum.midpoint.repo.sql.query.restriction.OrgRestriction.java

License:Apache License

@Override
public Criterion interpret(OrgFilter filter) throws QueryException {
    if (filter.isRoot()) {
        //         Criteria pCriteria = getInterpreter().getCriteria(null);
        DetachedCriteria dc = DetachedCriteria.forClass(ROrgClosure.class);
        String[] strings = new String[1];
        strings[0] = "descendant.oid";
        Type[] type = new Type[1];
        type[0] = StringType.INSTANCE;//from  w  w  w .  j a va2 s  .  co m
        dc.setProjection(Projections.sqlGroupProjection("descendant_oid",
                "descendant_oid having count(descendant_oid)=1", strings, type));
        //         pCriteria.add(Subqueries.in("this.oid", dc));
        return Subqueries.propertyIn("oid", dc);
        //         Query rootOrgQuery = session.createQuery("select org from ROrg as org where org.oid in (select descendant.oid from ROrgClosure group by descendant.oid having count(descendant.oid)=1)");
    }

    if (filter.getOrgRef() == null) {
        throw new QueryException("No organization reference defined in the search query.");
    }

    if (filter.getOrgRef().getOid() == null) {
        throw new QueryException(
                "No oid specified in organization reference " + filter.getOrgRef().debugDump());
    }

    DetachedCriteria detached;
    switch (filter.getScope()) {
    case ONE_LEVEL:
        detached = DetachedCriteria.forClass(RParentOrgRef.class, "p");
        detached.setProjection(Projections.distinct(Projections.property("p.ownerOid")));
        detached.add(Restrictions.eq("p.targetOid", filter.getOrgRef().getOid()));
        break;
    case SUBTREE:
    default:
        detached = DetachedCriteria.forClass(ROrgClosure.class, "cl");
        detached.setProjection(Projections.distinct(Projections.property("cl.descendantOid")));
        detached.add(Restrictions.eq("cl.ancestorOid", filter.getOrgRef().getOid()));
        detached.add(Restrictions.ne("cl.descendantOid", filter.getOrgRef().getOid()));
    }
    String mainAlias = getContext().getAlias(null);
    return Subqueries.propertyIn(mainAlias + ".oid", detached);
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void queryOrgTreeFindOrgs() throws Exception {
    Session session = open();//from   www .ja v a 2 s.c o m

    try {

        Criteria main = session.createCriteria(ROrg.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        DetachedCriteria detached = DetachedCriteria.forClass(RParentOrgRef.class, "p");
        detached.setProjection(Projections.distinct(Projections.property("p.ownerOid")));
        detached.add(Restrictions.eq("p.targetOid", "some oid"));

        main.add(Subqueries.propertyIn("o.oid", detached));
        main.addOrder(Order.asc("o.name.orig"));

        String expected = HibernateToSqlTranslator.toSql(main);

        OrgFilter orgFilter = OrgFilter.createOrg("some oid", OrgFilter.Scope.ONE_LEVEL);
        ObjectQuery objectQuery = ObjectQuery.createObjectQuery(orgFilter);
        objectQuery
                .setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, OrgType.class, objectQuery);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });

        OperationResult result = new OperationResult("query org structure");
        repositoryService.searchObjects(OrgType.class, objectQuery, null, result);

        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test310QueryNameAndOrg() throws Exception {
    Session session = open();/*  w w w  .j ava2  s .c  o m*/

    try {
        DetachedCriteria detached = DetachedCriteria.forClass(ROrgClosure.class, "cl");
        detached.setProjection(Projections.distinct(Projections.property("cl.descendantOid")));
        detached.add(Restrictions.eq("cl.ancestorOid", "1234"));
        detached.add(Restrictions.ne("cl.descendantOid", "1234"));

        Criteria main = session.createCriteria(RUser.class, "u");
        String mainAlias = "u";

        ProjectionList projections = Projections.projectionList();
        projections.add(Projections.property("fullObject"));

        projections.add(Projections.property("stringsCount"));
        projections.add(Projections.property("longsCount"));
        projections.add(Projections.property("datesCount"));
        projections.add(Projections.property("referencesCount"));
        projections.add(Projections.property("polysCount"));

        main.setProjection(projections);

        Conjunction c = Restrictions.conjunction();
        c.add(Restrictions.and(Restrictions.eq("u.name.orig", "cpt. Jack Sparrow"),
                Restrictions.eq("u.name.norm", "cpt jack sparrow")));
        c.add(Subqueries.propertyIn(mainAlias + ".oid", detached));
        main.add(c);

        main.addOrder(Order.asc("u.name.orig"));

        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eqFilter = EqualFilter.createEqual(ObjectType.F_NAME, ObjectType.class, prismContext, null,
                new PolyString("cpt. Jack Sparrow", "cpt jack sparrow"));

        OrgFilter orgFilter = OrgFilter.createOrg("12341234-1234-1234-1234-123412341234");

        ObjectQuery query = ObjectQuery.createObjectQuery(AndFilter.createAnd(eqFilter, orgFilter));
        query.setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, UserType.class, query);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.glaf.base.utils.HibernateUtil.java

License:Apache License

/**
 * //  w ww.j  av a 2s .co m
 * @param map
 * @param forClass
 * @return
 */
public static DetachedCriteria getCriteria(Map<String, String> map, Class<?> forClass) {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(forClass);
    Set<String> params = map.keySet();
    // boolean createAliased = false;
    if (params != null) {
        Map<String, String> aliasMap = new java.util.HashMap<String, String>();// ??
        int aliasNum = 0;// ???
        Iterator<String> it = params.iterator();
        while (it.hasNext()) {
            String key = (String) it.next();
            String value = map.get(key) == null ? null : map.get(key).toString();
            value = value == null ? value : value.trim();
            if (key.startsWith(QUERY_PREFIX) && value != null && value.trim().length() > 0) {
                // ??
                String name = key.substring(QUERY_PREFIX.length());
                // ?? "="
                String op = "eq";
                if (name.indexOf("_") != -1) {
                    int pos = name.lastIndexOf("_");
                    op = name.substring(pos + 1);
                    name = name.substring(0, pos);
                }

                if ("me".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=" + value));

                } else if ("zns".equals(op)) { // 
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(" 1 = 2 "));

                } else if ("mn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is NULL "));

                } else if ("mnn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is not NULL "));

                } else if ("md".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));

                } else if ("mis".equals(op)) { // in( ?_select )
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                } else if ("xd".equals(op)) { //  . date
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=? ",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if ("xs".equals(op)) { //  . String
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "='" + value + "' "));
                } else if ("xe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) > 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("ixe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) >= 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xel".equals(op)) { //  .  
                    if (!value.equals("") && Long.parseLong(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xne".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "<>" + value));
                    }
                } else if ("xi".equals(op)) { //  . in () String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(aliasMap.get(alias) + name + " in (" + value + ") "));
                } else if ("xl".equals(op)) { //  like . String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions
                            .sqlRestriction(aliasMap.get(alias) + name + " like '%" + value + "%'"));
                } else if (op.startsWith("xdate")) { // Date
                    String dateOp = "=";
                    if ("xdatelt".equals(op)) {
                        dateOp = "<";
                    } else if ("xdategt".equals(op)) {
                        dateOp = ">";
                    } else if ("xdatele".equals(op)) {
                        dateOp = "<=";
                    } else if ("xdatege".equals(op)) {
                        dateOp = ">=";
                    }
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if (op.startsWith("date")) { // Date
                    String dateOp = "=";
                    if ("datelt".equals(op)) {
                        dateOp = "<";
                    } else if ("dategt".equals(op)) {
                        dateOp = ">";
                    } else if ("datele".equals(op)) {
                        dateOp = "<=";
                    } else if ("datege".equals(op)) {
                        dateOp = ">=";
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } /*
                  * else if(op.equals("double")){ //Double String doubleOp
                  * = "="; if("double".equals(op)){ } }
                  */else if ("like".equals(op)) { // like
                    detachedCriteria.add(Restrictions.like(name, "%" + value + "%"));
                } else if ("es".equals(op)) {
                    // if(Integer.parseInt(value) != -1){
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(name + " = ? ", value, StandardBasicTypes.STRING));
                    // }
                } else if ("ex".equals(op)) { // =int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Integer(value)));
                    }
                } else if ("el".equals(op)) { // =long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Long(value)));
                    }
                } else if ("ed".equals(op)) { // =double
                    if (Double.parseDouble(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Double(value)));
                    }
                } else if ("nei".equals(op)) { // <>int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Integer(value)));
                    }
                } else if ("nel".equals(op)) { // <>long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Long(value)));
                    }
                } else if ("in".equals(op)) { // in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(
                                Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " in (" + value
                        // + ") "));
                    }
                } else if ("nin".equals(op)) { // not in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(Restrictions
                                .sqlRestriction(maintAlias + "_." + name + " not in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " not in (" + value
                        // + ") "));
                    }
                } else {
                    detachedCriteria.add(Restrictions.eq(name, value));
                }
            } else if (key.startsWith(ORDER_PREFIX)) {
                // ????? //order__asc(desc) ? hidden 
                String name = key.substring(ORDER_PREFIX.length());

                int pos = name.lastIndexOf(".");
                if (pos != -1) {
                    String alias = name.substring(0, pos);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                }

                if (value.trim().equalsIgnoreCase("asc")) {
                    detachedCriteria.addOrder(Order.asc(name));
                } else {
                    detachedCriteria.addOrder(Order.desc(name));
                }
            }
        }
        map.putAll(aliasMap);
    }

    return detachedCriteria;
}