List of usage examples for org.hibernate.criterion Restrictions sqlRestriction
public static Criterion sqlRestriction(String sql, Object value, Type type)
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); }