Example usage for org.hibernate.criterion Restrictions sqlRestriction

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

Introduction

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

Prototype

public static Criterion sqlRestriction(String sql, Object value, Type type) 

Source Link

Document

Create a restriction expressed in SQL with one JDBC parameter.

Usage

From source file:org.openmrs.module.idcards.db.hibernate.HibernateIdcardsDAO.java

License:Open Source License

/**
 * @see org.openmrs.module.idcards.db.IdcardsDAO#getPatientsByIdentifier(java.util.List)
 *///from   w ww  .j a  va 2 s . c  o  m
public List<Patient> getPatientsByIdentifier(List<String> identifiers) throws DAOException {
    String tmp1 = identifiers.toString();
    String tmp2 = tmp1.replaceAll(", ", "\\$|\\^");
    String tmp3 = tmp2.replaceAll(" ", "\\[ ]?");
    String tmp4 = tmp3.replaceAll("\\-", "\\[\\-\\]?");
    String regex = "^" + tmp4.substring(1, tmp4.length() - 1) + "$";
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Patient.class);
    criteria.createAlias("identifiers", "ids");
    criteria.add(Restrictions.sqlRestriction("identifier rlike ?", regex, StandardBasicTypes.STRING));
    log.debug("Patient identifier regex" + regex);
    log.debug("StandardBasicTypes.STRING: " + StandardBasicTypes.STRING.toString());
    return criteria.list();
}

From source file:org.openmrs.module.metadatasharing.api.db.hibernate.HibernateMetadataDAO.java

License:Open Source License

private void filter(Class<?> type, Criteria criteria, boolean includeRetired, String filter) {
    if (!includeRetired) {
        criteria.add(Restrictions.eq("retired", includeRetired));
    }/*from w  w w  . ja v a  2  s.  co m*/

    if (filter != null && !filter.isEmpty()) {
        Disjunction or = Restrictions.disjunction();
        criteria.add(or);

        or.add(Restrictions.like("uuid", filter, MatchMode.START));

        or.add(Restrictions.idEq(asItemId(filter)));

        type = ClassUtil.getDeproxiedClass(type);

        if (Role.class.isAssignableFrom(type)) {
            or.add(Restrictions.ilike("role", filter, MatchMode.START));

        } else if (Privilege.class.isAssignableFrom(type)) {
            or.add(Restrictions.ilike("privilege", filter, MatchMode.START));

        } else if (RelationshipType.class.isAssignableFrom(type)) {
            or.add(Restrictions.sqlRestriction("CONCAT(a_Is_To_B, CONCAT('/', b_Is_To_A)) like (?)",
                    "%" + filter, new StringType()));
        } else if (type.getSimpleName().equals("HtmlForm")) {
            criteria.createAlias("form", "form");
            or.add(Restrictions.ilike("form.name", filter, MatchMode.START));
        } else if (OpenmrsMetadata.class.isAssignableFrom(type)) {
            //It may happen that the name property is not defined for the specific metadata type so we need to test it.
            String[] propertyNames = sessionFactory.getClassMetadata(type).getPropertyNames();
            if (Arrays.asList(propertyNames).contains("name")) {
                or.add(Restrictions.ilike("name", filter, MatchMode.START));
            }
        }
    }
}

From source file:org.opennms.dashboard.server.CriteriaAddingVisitor.java

License:Open Source License

/**
 * <p>addCriteriaForCategories</p>
 *
 * @param criteria a {@link org.opennms.netmgt.model.OnmsCriteria} object.
 * @param categories a {@link java.lang.String} object.
 *///from   w  ww  .  j  a  va  2 s  .c om
public void addCriteriaForCategories(OnmsCriteria criteria, String... categories) {
    if (criteria.resultsOfType(OnmsMonitoredService.class) || criteria.resultsOfType(OnmsOutage.class)) {
        // Make a detached criteria to subselect the node IDs that are in the
        // specified surveillance categories
        DetachedCriteria categoryNodeCriteria = DetachedCriteria.forClass(OnmsNode.class, "categoryNodes");

        // HACK: Hibernate 3.6 aliases 'categoryNodes' as 'categoryNodes_' so use that for the raw SQL statement.
        // Also note that the database field that we use here is 'nodeId' but the bean property for node ID
        // in OnmsNode is 'id'.
        String sql = "categoryNodes_.nodeId in (select distinct cn.nodeId from category_node cn join categories c on cn.categoryId = c.categoryId where c.categoryName in ("
                + commaDelimitedQuestionMarks(categories.length) + "))";
        categoryNodeCriteria.add(
                Restrictions.sqlRestriction(sql, categories, arrayOfType(categories.length, new StringType())));

        // Join the categoryNodes IDs found by the subselect with the outer 'node' alias.
        // This requires that the criteria already has a 'node' alias to the node table.
        //
        // @see org.opennms.web.svclayer.support.DefaultRtcService#createOutageCriteria()
        // @see org.opennms.web.svclayer.support.DefaultRtcService#createServiceCriteria()
        //
        categoryNodeCriteria.add(Restrictions.eqProperty("categoryNodes.id", "node.id"));

        // Add a projection for 'id' so that the categoryNodes.id can be joined to
        // node.id in the outer criteria
        categoryNodeCriteria.setProjection(Projections.property("id"));

        // Use an exists subquery to evaluate the subselect
        criteria.add(Subqueries.exists(categoryNodeCriteria));
    } else {
        // TODO: This case assumes that the OnmsCriteria is querying an object with a 'nodeId' property.
        // I'm not sure this is ever used... I think this visitor is just for OnmsMonitoredService and 
        // OnmsOutage queries.
        String sql = "{alias}.nodeId in (select distinct cn.nodeId from category_node cn join categories c on cn.categoryId = c.categoryId where c.categoryName in ("
                + commaDelimitedQuestionMarks(categories.length) + "))";
        criteria.add(
                Restrictions.sqlRestriction(sql, categories, arrayOfType(categories.length, new StringType())));
    }
}

From source file:org.opennms.netmgt.dao.hibernate.CategoryDaoHibernate.java

License:Open Source License

/**
 * <p>getCriterionForCategorySetsUnion</p>
 *
 * @param categories an array of {@link java.lang.String} objects.
 * @return a {@link java.util.List} object.
 *//*  ww  w  . j av  a 2s  . co m*/
@Override
public List<Criterion> getCriterionForCategorySetsUnion(String[]... categories) {
    Assert.notNull(categories, "categories argument must not be null");
    Assert.isTrue(categories.length >= 1, "categories must have at least one set of categories");

    // Build a list a list of category IDs to use when building the restrictions
    List<List<Integer>> categoryIdsList = new ArrayList<List<Integer>>(categories.length);
    for (String[] categoryStrings : categories) {
        List<Integer> categoryIds = new ArrayList<Integer>(categoryStrings.length);
        for (String categoryString : categoryStrings) {
            OnmsCategory category = findByName(categoryString);
            if (category == null) {
                throw new IllegalArgumentException("Could not find category for name '" + categoryString + "'");
            }
            categoryIds.add(category.getId());
        }
        categoryIdsList.add(categoryIds);
    }

    List<Criterion> criteria = new ArrayList<Criterion>(categoryIdsList.size());

    for (List<Integer> categoryIds : categoryIdsList) {
        Type[] types = new Type[categoryIds.size()];
        String[] questionMarks = new String[categoryIds.size()];
        Type theOneAndOnlyType = new IntegerType();

        for (int i = 0; i < categoryIds.size(); i++) {
            types[i] = theOneAndOnlyType;
            questionMarks[i] = "?";
        }
        String sql = "{alias}.nodeId in (select distinct cn.nodeId from category_node cn where cn.categoryId in ("
                + StringUtils.arrayToCommaDelimitedString(questionMarks) + "))";
        criteria.add(
                Restrictions.sqlRestriction(sql, categoryIds.toArray(new Integer[categoryIds.size()]), types));
    }

    return criteria;
}

From source file:org.opennms.netmgt.dao.hibernate.CategoryDaoHibernate.java

License:Open Source License

/** {@inheritDoc} */
@Override//from ww w  .  j ava  2  s.  c o  m
public List<OnmsCategory> getCategoriesWithAuthorizedGroup(String groupName) {
    OnmsCriteria crit = new OnmsCriteria(OnmsCategory.class);
    crit.add(Restrictions.sqlRestriction(
            "{alias}.categoryId in (select cg.categoryId from category_group cg where cg.groupId = ?)",
            groupName, StringType.INSTANCE));
    return findMatching(crit);
}

From source file:org.opennms.web.filter.IPLikeFilter.java

License:Open Source License

/** {@inheritDoc} */
@Override// w  ww.  java  2  s  . c  o  m
public Criterion getCriterion() {
    return Restrictions.sqlRestriction("iplike( {alias}." + getPropertyName() + ", ?)", getValue(),
            StringType.INSTANCE);
}

From source file:org.opennms.web.notification.filter.UserFilter.java

License:Open Source License

/** {@inheritDoc} */
@Override/*  w  ww.  jav  a 2 s . co m*/
public Criterion getCriterion() {

    return Restrictions.sqlRestriction(
            " {alias}.notifyId in (SELECT DISTINCT usersnotified.notifyid FROM usersnotified WHERE usersnotified.userid=?)",
            getValue(), StringType.INSTANCE);
}

From source file:org.opennms.web.outage.filter.AssetFilter.java

License:Open Source License

/** {@inheritDoc} */
@Override//from w w w. j  av  a  2s  .co m
public Criterion getCriterion() {
    return Restrictions.sqlRestriction(
            " {alias}.ifserviceid IN (SELECT DISTINCT ifservices.id FROM ifservices, ipinterface, assets WHERE ifservices.ipinterfaceid = ipinterface.id AND ipinterface.nodeid = assets.nodeid AND assets."
                    + assetField + "=?)",
            getValue(), StringType.INSTANCE);
}

From source file:org.opennms.web.outage.filter.ForeignSourceFilter.java

License:Open Source License

/** {@inheritDoc} */
@Override/*  www .j  a  v a2s .  c o m*/
public Criterion getCriterion() {
    return Restrictions.sqlRestriction(
            " {alias}.nodeid in (SELECT DISTINCT NODE.nodeID FROM NODE WHERE NODE.foreignSource=?)", getValue(),
            StringType.INSTANCE);
}

From source file:org.opennms.web.outage.filter.NegativeForeignSourceFilter.java

License:Open Source License

/** {@inheritDoc} */
@Override//from   ww  w.  j av a  2s  .  c om
public Criterion getCriterion() {
    return Restrictions.sqlRestriction(
            " {alias}.nodeid not in (SELECT DISTINCT NODE.nodeID FROM NODE WHERE NODE.foreignSource=?)",
            getValue(), StringType.INSTANCE);
}