Project

General

Profile

« Previous | Next » 

Revision 09cf65f5

Added by Katja Luther over 2 years ago

ref #9843: adapt other uses of SortableTaxonNodeQueryResult

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonNodeDaoHibernateImpl.java
233 233
    private Query createQueryForUuidAndTitleCache(Integer limit, UUID classificationUuid, String pattern, boolean includeDoubtful){
234 234
        String doubtfulPattern = "";
235 235
        String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "("
236
                + " node.uuid, node.id, t.titleCache, rank"
236
                + " node.uuid, node.id, t.titleCache, rank, parent.uuid"
237 237
                + ") "
238 238
                + " FROM TaxonNode AS node "
239 239
                + "   JOIN node.taxon as t " // FIXME why not inner join here?
240 240
                + "   INNER JOIN t.name AS name "
241
                + "   LEFT OUTER JOIN node.parent as parent"
241 242
                + "   LEFT OUTER JOIN name.rank AS rank "
242 243
                + " WHERE ";
243 244

  
......
247 248
      if (pattern == null){
248 249
          pattern = "*";
249 250
      }
250
      if (pattern != null){
251
          if (pattern.equals("?")){
252
              limit = null;
253
          } else{
254
              if (!pattern.endsWith("*")){
255
                  pattern += "%";
256
              }
257
              pattern = pattern.replace("*", "%");
258
              pattern = pattern.replace("?", "%");
259
              if (classificationUuid != null){
260
                  queryString = queryString + " AND ";
261
              }
262
              queryString = queryString + " (t.titleCache LIKE (:pattern) " ;
263
              doubtfulPattern = "?" + pattern;
264
              if (includeDoubtful){
265
                  queryString = queryString + " OR t.titleCache LIKE (:doubtfulPattern))";
266
              }else{
267
                  queryString = queryString + ")";
268
              }
269
          }
270 251

  
252
      if (pattern.equals("?")){
253
          limit = null;
254
      } else{
255
          if (!pattern.endsWith("*")){
256
              pattern += "%";
257
          }
258
          pattern = pattern.replace("*", "%");
259
          pattern = pattern.replace("?", "%");
260
          if (classificationUuid != null){
261
              queryString = queryString + " AND ";
262
          }
263
          queryString = queryString + " (t.titleCache LIKE (:pattern) " ;
264
          doubtfulPattern = "?" + pattern;
265
          if (includeDoubtful){
266
              queryString = queryString + " OR t.titleCache LIKE (:doubtfulPattern))";
267
          }else{
268
              queryString = queryString + ")";
269
          }
271 270
      }
272 271

  
272

  
273

  
273 274
      Query query =  getSession().createQuery(queryString);
274 275
      if (pattern != null){
275 276
          query.setParameter("pattern", pattern);
......
1102 1103

  
1103 1104
         if (searchForClassifications){
1104 1105
             String queryString = "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "("
1105
                     + " node.uuid, node.id, node.classification.titleCache"
1106
                     + " node.uuid, node.id, node.classification.titleCache, parent.uuid"
1106 1107
                     + ") "
1107 1108
                     + " FROM TaxonNode AS node "
1109
                     + " LEFT OUTER JOIN node.parent as parent"
1108 1110
                     + " WHERE node.classification.id = " + classification.getId() +
1109 1111
                          " AND node.taxon IS NULL";
1110 1112
             if (pattern != null){
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dto/SortableTaxonNodeQueryResult.java
54 54
        this(taxonNodeUuid, taxonNodeId, taxonTitleCache, null, nameRank, parentNodeUuid);
55 55
    }
56 56

  
57
    public SortableTaxonNodeQueryResult(UUID taxonNodeUuid, Integer taxonNodeId, String taxonTitleCache,
58
            Rank nameRank) {
59
        this(taxonNodeUuid, taxonNodeId, taxonTitleCache, null, nameRank, null);
60
    }
57 61
    public SortableTaxonNodeQueryResult(UUID taxonNodeUuid, Integer taxonNodeId, String taxonTitleCache, UUID parentNodeUuid) {
58 62
        this(taxonNodeUuid, taxonNodeId, taxonTitleCache, null, parentNodeUuid);
59 63
    }

Also available in: Unified diff