From 4be60cf096a39af1e92ff014a611150568e78022 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 19 Jul 2018 13:20:32 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31193 --- .../src/user/jobengine/db/MediaFinder.java | 41 ++++++++++++------- .../user/jobengine/zk/model/SearchModel.java | 9 +++- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFinder.java index 8832c30b..4f7fb5ae 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFinder.java @@ -22,16 +22,9 @@ public class MediaFinder { private PreparedStatement createStatement(Connection connection, String criteria, String orderBy, boolean orderAscending, List typeIDs) throws SQLException { - StringBuilder typeCriteria = new StringBuilder(); - if (typeIDs != null) { - typeCriteria.append("("); - for (int i = 0; i < typeIDs.size(); i++) { - typeCriteria.append(typeIDs.get(i)); - if (i < typeIDs.size() - 1) - typeCriteria.append(","); - } - typeCriteria.append(")"); - } + StringBuilder typeCriteria = getTypeCriterias(typeIDs); + + String criteriasPattern = getCriteriasRegexPattern(criteria); StringBuilder sql = new StringBuilder(); sql.append("SELECT "); @@ -42,7 +35,7 @@ public class MediaFinder { sql.append("m.archived,"); sql.append("m.length,"); sql.append("m.itemtypeid mediaitemtypeid,"); - sql.append("HIGHLIGHT(md.description, '', '', 'valami') description,"); + sql.append(String.format("HIGHLIGHT(md.description, '', '', '%s') description,", criteriasPattern)); //sql.append("'blabla' description,"); sql.append("it.name mediaitemtypename,"); sql.append("m.houseid mediahouseid,"); @@ -72,11 +65,32 @@ public class MediaFinder { return st; } - private String[] extractCriteriaWords(String criteria) { + private String getCriteriasRegexPattern(String criteria) { String[] criterias = criteria.replace("*", "").replace("+", " ").split(" "); if (criteria.startsWith("\"") && criteria.endsWith("\"")) criterias = new String[] { criteria.replace("\"", "") }; - return criterias; + + StringBuilder sb = new StringBuilder(); + for (String word : criterias) { + if (sb.length() > 0) + sb.append("|"); + sb.append(word); + } + return sb.toString(); + } + + private StringBuilder getTypeCriterias(List typeIDs) { + StringBuilder typeCriteria = new StringBuilder(); + if (typeIDs != null) { + typeCriteria.append("("); + for (int i = 0; i < typeIDs.size(); i++) { + typeCriteria.append(typeIDs.get(i)); + if (i < typeIDs.size() - 1) + typeCriteria.append(","); + } + typeCriteria.append(")"); + } + return typeCriteria; } private List getTypeIDs(List searchFilters) { @@ -130,7 +144,6 @@ public class MediaFinder { int maxRecords = toResult - fromResult; - String[] criterias = extractCriteriaWords(criteria); List resultList = null; logger.info("Processing query result, maxRecords {}", maxRecords); while (rs.next() && maxRecords > 0) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 46868864..9b1454cb 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -155,8 +155,6 @@ public class SearchModel extends AsyncBaseModel { } } }; - - searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory()); } private void addTypeFilter(TypeFilter typeFilter) { @@ -169,7 +167,10 @@ public class SearchModel extends AsyncBaseModel { Selectors.wireEventListeners(view, this); configureSearchResultGrid(); showExternalMediaID(); + + searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory()); setSettingsPageSize(itemsGrid.getPageSize()); + //TODO rendezés } @Command @@ -208,6 +209,9 @@ public class SearchModel extends AsyncBaseModel { @NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" }) public void doSearch() { try { + + searchResult = null; + itemsGrid.setActivePage(0); searchValue = search.getText(); if (StringUtils.isBlank(searchValue) || searchValue.length() < 3) throw new Exception("Legalább 3 karakter megadása kötelező!"); @@ -530,6 +534,7 @@ public class SearchModel extends AsyncBaseModel { int pageSize = Integer.parseInt(source.getValue()); setSettingsPageSize(pageSize); itemsGrid.setPageSize(pageSize); + itemsGrid.setActivePage(0); } public void setRowsExpanded(boolean rowsExpanded) { -- 2.54.0