public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { SearchResultsFrozen frozenResults = (SearchResultsFrozen) request.getSession().getAttribute("searchResults"); if (null != frozenResults) { String phyloWSPath = request.getSession().getAttribute("originalSection") + "/find"; SearchResults<?> searchResults = frozenResults.thaw(); request.getSession().setAttribute("searchResultsThawed", searchResults); request .getSession() .setAttribute("recordSchema", request.getSession().getAttribute("recordSchema")); request.getSession().setAttribute("format", "rss1"); request.getSession().setAttribute("baseURL", TreebaseUtil.getPurlBase()); request.getSession().setAttribute("phyloWSPath", phyloWSPath); if (null != request.getParameter("query")) { String query = request.getParameter("query"); if (!TreebaseUtil.isEmpty(query)) { CQLParser parser = new CQLParser(); CQLNode root = parser.parse(query); request .getSession() .setAttribute("normalizedCQLQuery", URLEncoder.encode(root.toCQL(), "UTF-8")); } } } return new ModelAndView("searchResultsAsRDF"); }
/** * Parse the given CQL query and create a corresponding Hibernate query to filter for OAI set * definitions from it. * * @param query CQL query * @throws InvalidSearchQueryException thrown if the given search query could not be translated * into a SQL query */ public SetDefinitionFilter(final String query) throws InvalidSearchQueryException { // Adding or Removal of values has also to be done in Method evaluate // and in the Hibernate-Class-Method retrieveSetDefinitions // URI-style filters///////////////////////////////////////////////////// // Filter-Names criteriaMap.put(Constants.DC_IDENTIFIER_URI, new Object[] {COMPARE_EQ, "id"}); criteriaMap.put(TripleStoreUtility.PROP_NAME, new Object[] {COMPARE_LIKE, "name"}); criteriaMap.put(TripleStoreUtility.PROP_CREATED_BY_ID, new Object[] {COMPARE_EQ, "creator_id"}); criteriaMap.put( TripleStoreUtility.PROP_MODIFIED_BY_ID, new Object[] {COMPARE_EQ, "modified_by_id"}); criteriaMap.put( Constants.SET_DEFINITION_NS_URI + '/' + XmlUtility.NAME_SPECIFICATION, new Object[] {COMPARE_LIKE, "specification"}); // Sortby-Names propertyNamesMap.put("specification", "specification"); propertyNamesMap.put(TripleStoreUtility.PROP_NAME, "name"); propertyNamesMap.put(TripleStoreUtility.PROP_CREATED_BY_ID, "creator_id"); propertyNamesMap.put(TripleStoreUtility.PROP_MODIFIED_BY_ID, "modified_by_id"); propertyNamesMap.put(Constants.DC_IDENTIFIER_URI, "id"); // ////////////////////////////////////////////////////////////////////// // Path-style filters//////////////////////////////////////////////////// // Filter-Names criteriaMap.put(Constants.FILTER_PATH_ID, new Object[] {COMPARE_EQ, "id"}); criteriaMap.put(Constants.FILTER_PATH_NAME, new Object[] {COMPARE_LIKE, "name"}); criteriaMap.put(Constants.FILTER_PATH_CREATED_BY_ID, new Object[] {COMPARE_EQ, "creator_id"}); criteriaMap.put( Constants.FILTER_PATH_MODIFIED_BY_ID, new Object[] {COMPARE_EQ, "modified_by_id"}); criteriaMap.put( Constants.FILTER_PATH_SPECIFICATION, new Object[] {COMPARE_LIKE, "specification"}); // Sortby-Names propertyNamesMap.put("specification", "specification"); propertyNamesMap.put(Constants.FILTER_PATH_SPECIFICATION, "specification"); propertyNamesMap.put(Constants.FILTER_PATH_NAME, "name"); propertyNamesMap.put(Constants.FILTER_PATH_CREATED_BY_ID, "creator_id"); propertyNamesMap.put(Constants.FILTER_PATH_MODIFIED_BY_ID, "modified_by_id"); propertyNamesMap.put(Constants.FILTER_PATH_ID, "id"); // ////////////////////////////////////////////////////////////////////// if (query != null) { try { final CQLParser parser = new CQLParser(); this.detachedCriteria = DetachedCriteria.forClass(SetDefinition.class, "sd"); final Criterion criterion = evaluate(parser.parse(query)); if (criterion != null) { detachedCriteria.add(criterion); } } catch (final Exception e) { throw new InvalidSearchQueryException(e); } } }