git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 19 Jul 2018 13:20:32 +0000 (13:20 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 19 Jul 2018 13:20:32 +0000 (13:20 +0000)
server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFinder.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index 8832c30b6df95a0c25971de1960eb8cf7c4d613f..4f7fb5aefdb2339663dee2ea8c58ab77ba01529c 100644 (file)
@@ -22,16 +22,9 @@ public class MediaFinder {
 \r
        private PreparedStatement createStatement(Connection connection, String criteria, String orderBy, boolean orderAscending, List<String> typeIDs)\r
                        throws SQLException {\r
-               StringBuilder typeCriteria = new StringBuilder();\r
-               if (typeIDs != null) {\r
-                       typeCriteria.append("(");\r
-                       for (int i = 0; i < typeIDs.size(); i++) {\r
-                               typeCriteria.append(typeIDs.get(i));\r
-                               if (i < typeIDs.size() - 1)\r
-                                       typeCriteria.append(",");\r
-                       }\r
-                       typeCriteria.append(")");\r
-               }\r
+               StringBuilder typeCriteria = getTypeCriterias(typeIDs);\r
+\r
+               String criteriasPattern = getCriteriasRegexPattern(criteria);\r
 \r
                StringBuilder sql = new StringBuilder();\r
                sql.append("SELECT ");\r
@@ -42,7 +35,7 @@ public class MediaFinder {
                sql.append("m.archived,");\r
                sql.append("m.length,");\r
                sql.append("m.itemtypeid mediaitemtypeid,");\r
-               sql.append("HIGHLIGHT(md.description, '<b>', '</b>', 'valami') description,");\r
+               sql.append(String.format("HIGHLIGHT(md.description, '<span class=''rhl''>', '</span>', '%s') description,", criteriasPattern));\r
                //sql.append("'blabla' description,");\r
                sql.append("it.name mediaitemtypename,");\r
                sql.append("m.houseid mediahouseid,");\r
@@ -72,11 +65,32 @@ public class MediaFinder {
                return st;\r
        }\r
 \r
-       private String[] extractCriteriaWords(String criteria) {\r
+       private String getCriteriasRegexPattern(String criteria) {\r
                String[] criterias = criteria.replace("*", "").replace("+", " ").split(" ");\r
                if (criteria.startsWith("\"") && criteria.endsWith("\""))\r
                        criterias = new String[] { criteria.replace("\"", "") };\r
-               return criterias;\r
+\r
+               StringBuilder sb = new StringBuilder();\r
+               for (String word : criterias) {\r
+                       if (sb.length() > 0)\r
+                               sb.append("|");\r
+                       sb.append(word);\r
+               }\r
+               return sb.toString();\r
+       }\r
+\r
+       private StringBuilder getTypeCriterias(List<String> typeIDs) {\r
+               StringBuilder typeCriteria = new StringBuilder();\r
+               if (typeIDs != null) {\r
+                       typeCriteria.append("(");\r
+                       for (int i = 0; i < typeIDs.size(); i++) {\r
+                               typeCriteria.append(typeIDs.get(i));\r
+                               if (i < typeIDs.size() - 1)\r
+                                       typeCriteria.append(",");\r
+                       }\r
+                       typeCriteria.append(")");\r
+               }\r
+               return typeCriteria;\r
        }\r
 \r
        private List<String> getTypeIDs(List<String> searchFilters) {\r
@@ -130,7 +144,6 @@ public class MediaFinder {
 \r
                        int maxRecords = toResult - fromResult;\r
 \r
-                       String[] criterias = extractCriteriaWords(criteria);\r
                        List<ArchivedMedia> resultList = null;\r
                        logger.info("Processing query result, maxRecords {}", maxRecords);\r
                        while (rs.next() && maxRecords > 0) {\r
index 46868864feab0ad58b9f8ee393f9f44e040c74c4..9b1454cbe6d8a353913a2451e84c5cf24baeb5dc 100644 (file)
@@ -155,8 +155,6 @@ public class SearchModel extends AsyncBaseModel {
                                }\r
                        }\r
                };\r
-\r
-               searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory());\r
        }\r
 \r
        private void addTypeFilter(TypeFilter typeFilter) {\r
@@ -169,7 +167,10 @@ public class SearchModel extends AsyncBaseModel {
                Selectors.wireEventListeners(view, this);\r
                configureSearchResultGrid();\r
                showExternalMediaID();\r
+\r
+               searchHistory = new ListModelList<>(SessionUtil.getUserSearchHistory());\r
                setSettingsPageSize(itemsGrid.getPageSize());\r
+               //TODO rendezés\r
        }\r
 \r
        @Command\r
@@ -208,6 +209,9 @@ public class SearchModel extends AsyncBaseModel {
        @NotifyChange({ "searchResult", "selectedObject", "hasTSMMediaFile", "hasLowresMediaFile", "lowresMediaFilePath" })\r
        public void doSearch() {\r
                try {\r
+\r
+                       searchResult = null;\r
+                       itemsGrid.setActivePage(0);\r
                        searchValue = search.getText();\r
                        if (StringUtils.isBlank(searchValue) || searchValue.length() < 3)\r
                                throw new Exception("Legalább 3 karakter megadása kötelező!");\r
@@ -530,6 +534,7 @@ public class SearchModel extends AsyncBaseModel {
                int pageSize = Integer.parseInt(source.getValue());\r
                setSettingsPageSize(pageSize);\r
                itemsGrid.setPageSize(pageSize);\r
+               itemsGrid.setActivePage(0);\r
        }\r
 \r
        public void setRowsExpanded(boolean rowsExpanded) {\r