List of usage examples for org.hibernate.criterion Restrictions sqlRestriction
public static Criterion sqlRestriction(String sql, Object value, Type type)
From source file:de.escidoc.core.aa.business.persistence.hibernate.HibernateUserAccountDao.java
License:Open Source License
/** * See Interface for functional description. * * @see UserAccountDaoInterface #retrieveUserAccounts(java.util.Map, int, int, String, ListSorting) *//*from w w w . j a va 2 s . com*/ @Override public List<UserAccount> retrieveUserAccounts(final Map<String, Object> criterias, final int offset, final int maxResults, final String orderBy, final ListSorting sorting) throws SqlDatabaseSystemException { final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(UserAccount.class, "user"); final Map<String, Object> clonedCriterias = new HashMap<String, Object>(criterias); // ids final Set<String> userAccountIds = mergeSets( (Set<String>) clonedCriterias.remove(Constants.DC_IDENTIFIER_URI), (Set<String>) clonedCriterias.remove(Constants.FILTER_PATH_ID)); if (userAccountIds != null && !userAccountIds.isEmpty()) { detachedCriteria.add(Restrictions.in("id", userAccountIds.toArray())); } // active flag final String active = (String) clonedCriterias.remove(Constants.FILTER_ACTIVE); final String active1 = (String) clonedCriterias.remove(Constants.FILTER_PATH_ACTIVE); if (active != null) { detachedCriteria.add(Restrictions.eq("active", Boolean.valueOf(active))); } else if (active1 != null) { detachedCriteria.add(Restrictions.eq("active", Boolean.valueOf(active1))); } for (final Entry<String, Object[]> stringEntry : criteriaMap.entrySet()) { if (stringEntry.getKey().equals(Constants.FILTER_ORGANIZATIONAL_UNIT) || stringEntry.getKey().equals(Constants.FILTER_PATH_ORGANIZATIONAL_UNIT)) { continue; } final Object criteriaValue = clonedCriterias.remove(stringEntry.getKey()); if (criteriaValue != null) { final Object[] parts = stringEntry.getValue(); if (parts[0].equals(COMPARE_EQ)) { detachedCriteria.add(Restrictions.eq((String) parts[1], criteriaValue)); } else { detachedCriteria.add(Restrictions.like((String) parts[1], criteriaValue)); } } } // organizational units final String organizationalUnit1 = (String) clonedCriterias.remove(Constants.FILTER_ORGANIZATIONAL_UNIT); final String organizationalUnit2 = (String) clonedCriterias .remove(Constants.FILTER_PATH_ORGANIZATIONAL_UNIT); final String organizationalUnit = organizationalUnit1 != null ? organizationalUnit1 : organizationalUnit2; if (organizationalUnit != null) { final String ouAttributeName = EscidocConfiguration.getInstance() .get(EscidocConfiguration.ESCIDOC_CORE_AA_OU_ATTRIBUTE_NAME); if (ouAttributeName == null || ouAttributeName.length() == 0) { throw new SqlDatabaseSystemException("ou-attribute-name not found in configuration"); } detachedCriteria .add(Restrictions.sqlRestriction("this_.id in (" + "select ua.id from aa.user_account ua, " + "aa.user_attribute atts " + "where ua.id = atts.user_id " + "and atts.name = '" + ouAttributeName + "' and atts.value = ?)", organizationalUnit, Hibernate.STRING)); // detachedCriteria.add(Restrictions.like("ous", StringUtility // .concatenateToString("%", organizationalUnit, "|||%"))); } if (orderBy != null) { if (sorting == ListSorting.ASCENDING) { detachedCriteria.addOrder(Order.asc(propertiesNamesMap.get(orderBy))); } else if (sorting == ListSorting.DESCENDING) { detachedCriteria.addOrder(Order.desc(propertiesNamesMap.get(orderBy))); } } if (clonedCriterias.isEmpty()) { final List<UserAccount> result; try { result = getHibernateTemplate().findByCriteria(detachedCriteria, offset, maxResults); } catch (final DataAccessException e) { throw new SqlDatabaseSystemException(e); } return result; } else { // unsupported filter criteria has been found, therefore the result // list must be empty. return new ArrayList<UserAccount>(0); } }
From source file:de.tuclausthal.submissioninterface.servlets.controller.SearchSubmissions.java
License:Open Source License
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Session session = RequestAdapter.getSession(request); TaskDAOIf taskDAO = DAOFactory.TaskDAOIf(session); Task task = taskDAO.getTask(Util.parseInteger(request.getParameter("taskid"), 0)); if (task == null) { request.setAttribute("title", "Aufgabe nicht gefunden"); request.getRequestDispatcher("MessageView").forward(request, response); return;/*from w w w. j a v a 2 s.co m*/ } // check Lecture Participation ParticipationDAOIf participationDAO = DAOFactory.ParticipationDAOIf(session); Participation participation = participationDAO.getParticipation(RequestAdapter.getUser(request), task.getTaskGroup().getLecture()); if (participation == null || participation.getRoleType().compareTo(ParticipationRole.TUTOR) < 0) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "insufficient rights"); return; } if (request.getParameterValues("search") == null || request.getParameterValues("search").length == 0 || request.getParameter("q") == null || request.getParameter("search").trim().isEmpty()) { request.setAttribute("title", "Nicht gesucht"); request.getRequestDispatcher("MessageView").forward(request, response); return; } Set<Submission> foundSubmissions = new LinkedHashSet<Submission>(); if (task.isADynamicTask()) { DynamicTaskStrategieIf dynamicTask = task.getDynamicTaskStrategie(session); if (arrayContains(request.getParameterValues("search"), "dyntaskdescription")) { for (Submission submission : task.getSubmissions()) { String result = ""; for (TaskNumber taskNumber : dynamicTask.getVariables(submission)) { if (result.isEmpty()) { result = taskNumber.getNumber(); } else { result += " " + taskNumber.getNumber(); } } if (result.contains(request.getParameter("q"))) { foundSubmissions.add(submission); break; } } } if (arrayContains(request.getParameterValues("search"), "dyntasksolution")) { for (Submission submission : task.getSubmissions()) { for (String result : dynamicTask.getUserResults(submission)) { if (result.contains(request.getParameter("q"))) { foundSubmissions.add(submission); break; } } } } } if (arrayContains(request.getParameterValues("search"), "files")) { File taskPath = new File(new ContextAdapter(getServletContext()).getDataPath().getAbsolutePath() + System.getProperty("file.separator") + task.getTaskGroup().getLecture().getId() + System.getProperty("file.separator") + task.getTaskid()); for (Submission submission : task.getSubmissions()) { File submissionPath = new File(taskPath, String.valueOf(submission.getSubmissionid())); List<String> files = Util.listFilesAsRelativeStringList(submissionPath); for (String file : files) { StringBuffer fileContent = Util.loadFile(new File(submissionPath, file)); if (fileContent.toString().contains(request.getParameter("q"))) { foundSubmissions.add(submission); break; } } } } if (arrayContains(request.getParameterValues("search"), "publiccomments")) { foundSubmissions.addAll(session.createCriteria(Submission.class).add(Restrictions.eq("task", task)) .add(Restrictions.like("points.publicComment", "%" + request.getParameter("q") + "%")).list()); } if (arrayContains(request.getParameterValues("search"), "privatecomments")) { foundSubmissions.addAll(session.createCriteria(Submission.class).add(Restrictions.eq("task", task)) .add(Restrictions.like("points.internalComment", "%" + request.getParameter("q") + "%")) .list()); } if (arrayContains(request.getParameterValues("search"), "testresults")) { foundSubmissions.addAll(session.createCriteria(Submission.class).add(Restrictions.eq("task", task)) .add(Restrictions.sqlRestriction( "submissionid in (select submission_submissionid from testresults where testOutput like ?)", "%" + request.getParameter("q") + "%", Hibernate.STRING)) .list()); } request.setAttribute("task", task); request.setAttribute("results", foundSubmissions); request.getRequestDispatcher("SearchSubmissionsResultView").forward(request, response); }
From source file:edu.utah.further.ds.impl.executor.db.hibernate.criteria.HibernateLoadByIdExecutor.java
License:Apache License
/** * @param request/* www .jav a 2s. c om*/ * @return * @see edu.utah.further.core.chain.AbstractRequestHandler#process(edu.utah.further.core.api.chain.ChainRequest) */ @Override public boolean process(final ChainRequest request) { // Read input arguments final HibernateExecReq executionReq = new HibernateExecReq(request); final SessionFactory sessionFactory = executionReq.getSessionFactory(); notNull(sessionFactory, "Expected SessionFactory"); final Class<? extends PersistentEntity<?>> rootEntity = executionReq.getRootEntity(); notNull(rootEntity, "Expected root entity class"); // Read the search criteria's root entity meta data final List<Object> list = executionReq.getResult(); final Object[] listArray = CollectionUtil.toArrayNullSafe(list); final ClassMetadata classMetadata = sessionFactory.getClassMetadata(rootEntity); final String identifierName = classMetadata.getIdentifierPropertyName(); final Type identifierType = classMetadata.getIdentifierType(); final int numTypes = listArray.length; final Type[] types = new Type[numTypes]; for (int i = 0; i < numTypes; i++) { types[i] = identifierType; } // Build Hibernate criteria final GenericCriteria criteria = GenericCriteriaFactory.criteria(CriteriaType.CRITERIA, rootEntity, sessionFactory.getCurrentSession()); if (identifierType.isComponentType()) { final String sqlInClause = HibernateUtil.sqlRestrictionCompositeIn(rootEntity, sessionFactory, numTypes); criteria.add(Restrictions.sqlRestriction(sqlInClause, listArray, types)); } else { final int size = list.size(); if (size > MAX_IN) { // Create a disjunction of IN clauses. Add MAX_IN elements at a time to // each IN clause (except the last IN, whose size is size % MAX_IN). final Junction junction = Restrictions.disjunction(); for (int i = 0; i < size; i += MAX_IN) { junction.add( Restrictions.in(THIS + identifierName, list.subList(i, Math.max(size, MAX_IN + i)))); } criteria.add(junction); } else { // Single chunk, add directly as a criterion without the junction trick criteria.add(Restrictions.in(THIS + identifierName, list)); } } executionReq.setResult(criteria); return false; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
/** * Meets relation// ww w .jav a 2 s .c om * * @param initializedCriteria an initialized criteria * @param pvp a possibilistic valid time period. * @return A criteria */ public static Criteria meets(Criteria initializedCriteria, PossibilisticVTP pvp) { Long left = pvp.getStartMP() - pvp.getStartLeft(); Long right = pvp.getStartMP() + pvp.getStartRight(); initializedCriteria = initializedCriteria.add(Restrictions.and( Restrictions.sqlRestriction("( {alias}.endMP + {alias}.endLeft ) >= ?", left, LongType.INSTANCE), Restrictions.sqlRestriction("( {alias}.endMP + {alias}.endLeft ) <= ?", right, LongType.INSTANCE))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
public static Criteria meet_by(Criteria initializedCriteria, PossibilisticVTP pvp) { Long left = pvp.getEndMP() - pvp.getEndLeft(); Long right = pvp.getEndMP() + pvp.getEndRight(); initializedCriteria = initializedCriteria.add(Restrictions.and( Restrictions.sqlRestriction("( {alias}.startMP + {alias}.startLeft ) >= ?", left, LongType.INSTANCE),//from w ww. j a v a2 s.com Restrictions.sqlRestriction("( {alias}.startMP + {alias}.startLeft ) <= ?", right, LongType.INSTANCE))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
/** * Implements the overlaps based on (i+ < j+) ^(i+ > j+) ^(i+<j+) * * @param initializedCriteria/*from ww w .j a v a 2 s . c o m*/ * @param pvp * @return */ public static Criteria overlaps(Criteria initializedCriteria, PossibilisticVTP pvp) { Long d1left = pvp.getStartMP(); Long d1Right = pvp.getEndMP(); initializedCriteria = initializedCriteria.add(Restrictions.and( Restrictions.sqlRestriction("({alias}.startMP + {alias}.startRight ) < ?", d1left, LongType.INSTANCE), Restrictions.sqlRestriction(" ( {alias}.endMP - {alias}.endLeft ) < ? ", d1left, LongType.INSTANCE), Restrictions.sqlRestriction(" ( {alias}.endMP + {alias}.endRight) < ?", d1Right, LongType.INSTANCE))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
/** * Implements the overlapped_by criteria * * @param initializedCriteria/*from w ww .ja va2 s . c o m*/ * @param pvp * @return */ public static Criteria overlapped_by(Criteria initializedCriteria, PossibilisticVTP pvp) { Long d1left = pvp.getStartMP(); Long d1Right = pvp.getEndMP(); initializedCriteria = initializedCriteria.add(Restrictions.and( Restrictions.sqlRestriction("({alias}.startMP - {alias}.startLeft ) > ?", d1left, LongType.INSTANCE), Restrictions.sqlRestriction(" ( {alias}.startMP + {alias}.startRight ) < ? ", d1left, LongType.INSTANCE), Restrictions.sqlRestriction(" ( {alias}.endMP - {alias}.endLeft) > ?", d1Right, LongType.INSTANCE))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
/** * Implements the during criteria/* w w w. j a v a 2 s . c om*/ * * @param initializedCriteria * @param pvp * @return */ public static Criteria during(Criteria initializedCriteria, PossibilisticVTP pvp) { Long jstart = pvp.getStartMP(); Long jright = pvp.getEndMP() + pvp.getEndRight(); Long jleft = pvp.getStartMP() - pvp.getStartLeft(); Long jend = pvp.getEndMP(); initializedCriteria = initializedCriteria.add(Restrictions.or( Restrictions.and(Restrictions.sqlRestriction("({alias}.startMP ) > ?", jstart, LongType.INSTANCE), Restrictions.sqlRestriction("{alias}.endMP <= ?", jright, LongType.INSTANCE)), Restrictions.and(Restrictions.sqlRestriction("({alias}.startMP ) >= ?", jleft, LongType.INSTANCE), Restrictions.sqlRestriction("{alias}.endMP < ?", jend, LongType.INSTANCE)))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
/** * Implements the contains/*from w w w. ja va 2s . c o m*/ * * @param initializedCriteria * @param pvp * @return */ public static Criteria contains(Criteria initializedCriteria, PossibilisticVTP pvp) { Long jstart = pvp.getStartMP(); Long jright = pvp.getStartMP() + pvp.getStartRight(); Long jleft = pvp.getEndMP() - pvp.getEndLeft(); Long jend = pvp.getEndMP(); initializedCriteria = initializedCriteria.add(Restrictions.or( Restrictions.and(Restrictions.sqlRestriction("({alias}.startMP ) < ?", jstart, LongType.INSTANCE), Restrictions.sqlRestriction("{alias}.endMP >= ?", jleft, LongType.INSTANCE)), Restrictions.and(Restrictions.sqlRestriction("({alias}.startMP ) <= ?", jright, LongType.INSTANCE), Restrictions.sqlRestriction("{alias}.endMP > ?", jend, LongType.INSTANCE)))); return initializedCriteria; }
From source file:es.jpons.persistence.query.CriteriaAllenRelations.java
License:Open Source License
public static Criteria equals(Criteria initializedCriteria, PossibilisticVTP pvp) { initializedCriteria = initializedCriteria.add(Restrictions.and( Restrictions.or(/*from w ww.j a v a2 s.c o m*/ Restrictions.sqlRestriction("({alias}.startMP + {alias}.startRight ) <= ?", pvp.getStartMP() - pvp.getStartLeft(), LongType.INSTANCE), Restrictions.sqlRestriction("({alias}.startMP - {alias}.startLeft ) >= ?", pvp.getStartMP() + pvp.getStartRight(), LongType.INSTANCE)), Restrictions.or( Restrictions.sqlRestriction("({alias}.endMP + {alias}.endRight ) <= ?", pvp.getEndMP() - pvp.getEndLeft(), LongType.INSTANCE), Restrictions.sqlRestriction("({alias}.endMP - {alias}.endLeft ) >= ?", pvp.getEndMP() + pvp.getEndRight(), LongType.INSTANCE)))); return initializedCriteria; }