|
40 | 40 | import jakarta.inject.Named; |
41 | 41 | import jakarta.persistence.*; |
42 | 42 | import jakarta.persistence.criteria.*; |
| 43 | +import org.apache.commons.lang3.StringUtils; |
43 | 44 |
|
44 | 45 | /** |
45 | 46 | * |
@@ -281,60 +282,21 @@ public List<FileMetadata> findFileMetadataByDatasetVersionId(Long datasetVersion |
281 | 282 | .setMaxResults(maxResults) |
282 | 283 | .getResultList(); |
283 | 284 | } |
284 | | - |
285 | | - public List<FileMetadata> findFileMetadataByDatasetVersionIdLabelSearchTerm(Long datasetVersionId, String searchTerm, String userSuppliedSortField, String userSuppliedSortOrder){ |
286 | | - FileSortFieldAndOrder sortFieldAndOrder = new FileSortFieldAndOrder(userSuppliedSortField, userSuppliedSortOrder); |
287 | 285 |
|
288 | | - String sortField = sortFieldAndOrder.getSortField(); |
289 | | - String sortOrder = sortFieldAndOrder.getSortOrder(); |
290 | | - String searchClause = ""; |
291 | | - if(searchTerm != null && !searchTerm.isEmpty()){ |
292 | | - searchClause = " and (lower(o.label) like '%" + searchTerm.toLowerCase() + "%' or lower(o.description) like '%" + searchTerm.toLowerCase() + "%')"; |
293 | | - } |
294 | | - |
295 | | - String queryString = "select o from FileMetadata o where o.datasetVersion.id = :datasetVersionId" |
296 | | - + searchClause |
297 | | - + " order by o." + sortField + " " + sortOrder; |
298 | | - return em.createQuery(queryString, FileMetadata.class) |
299 | | - .setParameter("datasetVersionId", datasetVersionId) |
300 | | - .getResultList(); |
301 | | - } |
302 | | - |
303 | | - public List<Integer> findFileMetadataIdsByDatasetVersionIdLabelSearchTerm(Long datasetVersionId, String searchTerm, String userSuppliedSortField, String userSuppliedSortOrder){ |
304 | | - FileSortFieldAndOrder sortFieldAndOrder = new FileSortFieldAndOrder(userSuppliedSortField, userSuppliedSortOrder); |
305 | | - |
306 | | - searchTerm=searchTerm.trim(); |
307 | | - String sortField = sortFieldAndOrder.getSortField(); |
308 | | - String sortOrder = sortFieldAndOrder.getSortOrder(); |
309 | | - String searchClause = ""; |
310 | | - if(searchTerm != null && !searchTerm.isEmpty()){ |
311 | | - searchClause = " and (lower(o.label) like '%" + searchTerm.toLowerCase() + "%' or lower(o.description) like '%" + searchTerm.toLowerCase() + "%')"; |
312 | | - } |
313 | | - |
314 | | - //the createNativeQuary takes persistant entities, which Integer.class is not, |
315 | | - //which is causing the exception. Hence, this query does not need an Integer.class |
316 | | - //as the second parameter. |
317 | | - return em.createNativeQuery("select o.id from FileMetadata o where o.datasetVersion_id = " + datasetVersionId |
318 | | - + searchClause |
319 | | - + " order by o." + sortField + " " + sortOrder) |
320 | | - .getResultList(); |
321 | | - } |
322 | | - |
323 | | - public List<Long> findDataFileIdsByDatasetVersionIdLabelSearchTerm(Long datasetVersionId, String searchTerm, String userSuppliedSortField, String userSuppliedSortOrder){ |
| 286 | + public List<Long> findDataFileIdsByDatasetVersionIdLabelSearchTerm(Long datasetVersionId, String userSuppliedSearchTerm, String userSuppliedSortField, String userSuppliedSortOrder) { |
324 | 287 | FileSortFieldAndOrder sortFieldAndOrder = new FileSortFieldAndOrder(userSuppliedSortField, userSuppliedSortOrder); |
325 | | - |
326 | | - searchTerm=searchTerm.trim(); |
327 | | - String sortField = sortFieldAndOrder.getSortField(); |
328 | | - String sortOrder = sortFieldAndOrder.getSortOrder(); |
329 | | - String searchClause = ""; |
330 | | - if(searchTerm != null && !searchTerm.isEmpty()){ |
331 | | - searchClause = " and (lower(o.label) like '%" + searchTerm.toLowerCase() + "%' or lower(o.description) like '%" + searchTerm.toLowerCase() + "%')"; |
| 288 | + String searchTerm = !StringUtils.isBlank(userSuppliedSearchTerm) ? "%"+userSuppliedSearchTerm.trim().toLowerCase()+"%" : null; |
| 289 | + |
| 290 | + String selectClause = "select o.datafile_id from FileMetadata o where o.datasetversion_id = " + datasetVersionId; |
| 291 | + String searchClause = searchTerm != null ? " and (lower(o.label) like ? or lower(o.description) like ?)" : ""; |
| 292 | + String orderByClause = " order by o." + sortFieldAndOrder.getSortField() + " " + sortFieldAndOrder.getSortOrder(); |
| 293 | + |
| 294 | + Query query = em.createNativeQuery(selectClause + searchClause + orderByClause); |
| 295 | + if (searchTerm != null) { |
| 296 | + query.setParameter(1, searchTerm); |
| 297 | + query.setParameter(2, searchTerm); |
332 | 298 | } |
333 | | - |
334 | | - return em.createNativeQuery("select o.datafile_id from FileMetadata o where o.datasetVersion_id = " + datasetVersionId |
335 | | - + searchClause |
336 | | - + " order by o." + sortField + " " + sortOrder) |
337 | | - .getResultList(); |
| 299 | + return query.getResultList(); |
338 | 300 | } |
339 | 301 |
|
340 | 302 | public List<FileMetadata> findFileMetadataByDatasetVersionIdLazy(Long datasetVersionId, int maxResults, String userSuppliedSortField, String userSuppliedSortOrder, int firstResult) { |
|
0 commit comments