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: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;
}