private Criteria buildNegativeJpaCriteria(Class clazz, Map negativeFieldValues) { Criteria criteria = new Criteria(clazz.getName()); for (Iterator i = negativeFieldValues.entrySet().iterator(); i.hasNext(); ) { Map.Entry e = (Map.Entry) i.next(); String key = (String) e.getKey(); Object value = e.getValue(); if (value instanceof Collection) { criteria.notIn(key, (List) value); } else { criteria.ne(key, value); } } return criteria; }
/** * @see org.kuali.rice.krad.dao.MaintenanceDocumentDao#getLockingDocumentNumber(java.lang.String, * java.lang.String) */ public String getLockingDocumentNumber(String lockingRepresentation, String documentNumber) { String lockingDocNumber = ""; // build the query criteria Criteria criteria = new Criteria(MaintenanceLock.class.getName()); criteria.eq("lockingRepresentation", lockingRepresentation); // if a docHeaderId is specified, then it will be excluded from the // locking representation test. if (StringUtils.isNotBlank(documentNumber)) { criteria.ne(KRADPropertyConstants.DOCUMENT_NUMBER, documentNumber); } // attempt to retrieve a document based off this criteria MaintenanceLock maintenanceLock = (MaintenanceLock) new QueryByCriteria(entityManager, criteria).toQuery().getSingleResult(); // if a document was found, then there's already one out there pending, // and we consider it 'locked' and we return the docnumber. if (maintenanceLock != null) { lockingDocNumber = maintenanceLock.getDocumentNumber(); } return lockingDocNumber; }