git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Thu, 3 Mar 2022 14:50:23 +0000 (14:50 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Thu, 3 Mar 2022 14:50:23 +0000 (14:50 +0000)
server/user.mediacube.gui/src/user/jobengine/zk/model/ListSearchModel.java

index 806a372852e60a43ee8686a858120bd10763bb11..08384a3464ece0c42504b9fcf6ef4926615c2d98 100644 (file)
@@ -16,6 +16,7 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.NoSuchElementException;\r
 \r
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
@@ -42,7 +43,6 @@ import org.zkoss.zk.ui.select.annotation.Wire;
 import org.zkoss.zk.ui.util.Clients;\r
 import org.zkoss.zul.Button;\r
 import org.zkoss.zul.Checkbox;\r
-import org.zkoss.zul.Column;\r
 import org.zkoss.zul.Combobox;\r
 import org.zkoss.zul.Div;\r
 import org.zkoss.zul.Hbox;\r
@@ -254,6 +254,7 @@ public class ListSearchModel extends AsyncBaseModel {
                        Listhead head = itemsListbox.getListhead();\r
                        head.addEventListener(ZulEvents.ON_COL_SIZE, new ColumnSizeListener(this));\r
                } catch (Exception e) {\r
+                       logger.error("error in afterCompose");\r
                        handleSearchError(e);\r
                }\r
 \r
@@ -274,19 +275,20 @@ public class ListSearchModel extends AsyncBaseModel {
 \r
        private void configureSearchResultListbox() {\r
                logger.info("configureSearchResultListbox");\r
-               if (itemsListbox != null) {\r
-                       if (itemsListbox.getItemCount() > 0) {\r
-                               Paging paging = itemsListbox.getPagingChild();\r
-                               paging.setAutohide(false);\r
-\r
-                               for (Component header : itemsListbox.getHeads()) {\r
-                                       Listhead column = (Listhead) header;\r
-                                       if (columnOrder != null)\r
-                                               if (column.getAttribute("label").equals(columnOrder.entrySet().iterator().next().getKey()))\r
-                                                       column.setAttribute("label", columnOrder.entrySet().iterator().next().getValue());\r
-                                       column.addEventListener("onSort", evt -> doSort(evt));\r
-                               }\r
-                       }\r
+               if (itemsListbox != null && itemsListbox.getHeads().size() == 1) {\r
+//                     if (itemsListbox.getItemCount() > 0) {\r
+                       Paging paging = itemsListbox.getPagingChild();\r
+                       paging.setAutohide(false);\r
+//                     Listhead listhead = (Listhead) itemsListbox.getHeads().iterator().next();\r
+//                     logger.info("next");\r
+//                     for (Component header : itemsListbox.getListhead(). getHeads()) {\r
+//                             Listhead column = (Listhead) header;\r
+//                             if (columnOrder != null)\r
+//                                     if (column.getAttribute("label").equals(columnOrder.entrySet().iterator().next().getKey()))\r
+//                                             column.setAttribute("label", columnOrder.entrySet().iterator().next().getValue());\r
+//                             column.addEventListener("onSort", evt -> doSort(evt));\r
+//                     }\r
+//                     }\r
                }\r
        }\r
 \r
@@ -389,26 +391,23 @@ public class ListSearchModel extends AsyncBaseModel {
                return searchFilters;\r
        }\r
 \r
-       public void doSort(Event event) throws Exception {\r
-               logger.info("doSort");\r
-               if (itemsListbox.getItemCount() > 0) {\r
-                       itemsListbox.getHeads().forEach(c -> ((Column) c).setSortDirection("natural"));\r
-                       SortEvent evt = (SortEvent) event;\r
-                       Column column = (Column) evt.getTarget();\r
-                       column.setSortDirection(evt.isAscending() ? "ascending" : "descending");\r
-                       logger.info("{} {}", column.getLabel(), evt.isAscending());\r
-\r
-                       columnOrder = new HashMap<String, String>();\r
-                       columnOrder.put(column.getLabel(), column.getSortDirection());\r
-                       SessionUtil.putUserColumnOrder(columnOrder);\r
+       @Command\r
+       public void doSort(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) throws Exception {\r
+               itemsListbox.getListhead().getChildren().forEach(h -> ((Listheader) h).setSortDirection("natural"));\r
+               SortEvent evt = (SortEvent) ctx.getTriggerEvent();\r
+               Listheader header = (Listheader) ctx.getComponent();\r
+               header.setSortDirection(evt.isAscending() ? "ascending" : "descending");\r
+               logger.info("header.getLabel(): {} {}", header.getLabel(), evt.isAscending() ? "ascending" : "descending");\r
 \r
-                       orderBy = columnHeaders.get(column.getLabel());\r
-                       isOrderAscending = evt.isAscending();\r
-                       doSearch();\r
+               columnOrder = new HashMap<>();\r
+               columnOrder.put(header.getLabel(), header.getSortDirection());\r
+               SessionUtil.putUserColumnOrder(columnOrder);\r
 \r
-                       notifyChange("searchResult", "selectedObject", "hasLowresMediaFile", "lowresMediaFilePath");\r
-                       evt.stopPropagation();\r
-               }\r
+               orderBy = columnHeaders.get(header.getLabel());\r
+               isOrderAscending = evt.isAscending();\r
+               doSearch();\r
+               notifyChange("searchResult", "selectedObject", "hasLowresMediaFile", "lowresMediaFilePath");\r
+               evt.stopPropagation();\r
        }\r
 \r
        @Command\r
@@ -603,9 +602,17 @@ public class ListSearchModel extends AsyncBaseModel {
        private void handleSearchError(Exception e) {\r
                if (e instanceof NullPointerException)\r
                        Clients.showNotification("Database query error!", "error", btnSearch, "start_center", 3000);\r
-               else\r
+               else if (e instanceof NoSuchElementException) {\r
+                       Clients.showNotification("NoSuchElementException!", "error", btnSearch, "start_center", 3000);\r
+               } else {\r
                        Clients.showNotification(e.getMessage(), "error", btnSearch, "start_center", 3000);\r
-               logger.error(e.getMessage());\r
+               }\r
+\r
+               if (e.getMessage() != null) {\r
+                       logger.error(e.getMessage());\r
+               } else {\r
+                       logger.error("e.getMessage() == null");\r
+               }\r
        }\r
 \r
        private void highlight(ArchivedMedia am, boolean highlight) {\r
@@ -852,9 +859,9 @@ public class ListSearchModel extends AsyncBaseModel {
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
        public void select(@BindingParam("selectedObject") ArchivedMedia selectedObject,\r
                        @ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
-//             highlight(this.selectedObject, false);\r
+               highlight(this.selectedObject, false);\r
                setSelectedObject(selectedObject);\r
-//             highlight(this.selectedObject, true);\r
+               highlight(this.selectedObject, true);\r
 \r
                // scrolls the ancestor elements to make the specified element visible\r
                Clients.scrollIntoView(mediaDetails.getFirstChild());\r
@@ -949,7 +956,7 @@ public class ListSearchModel extends AsyncBaseModel {
 \r
        private void setColumnOrder() {\r
                columnOrder = new HashMap<String, String>();\r
-               if (SessionUtil.getUserColumnOrder() != null) {\r
+               if (SessionUtil.getUserColumnOrder() != null && !SessionUtil.getUserColumnOrder().isEmpty()) {\r
                        columnOrder.put(SessionUtil.getUserColumnOrder().entrySet().iterator().next().getKey(),\r
                                        (String) SessionUtil.getUserColumnOrder().entrySet().iterator().next().getValue());\r
                } else {\r