b7591864c118a47b1dcf91ee301dbab1105cd433
[mediacube.git] /
1 package user.jobengine.zk.model;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 import java.util.Map;\r
6 \r
7 import org.apache.commons.lang.StringUtils;\r
8 import org.apache.logging.log4j.LogManager;\r
9 import org.apache.logging.log4j.Logger;\r
10 import org.zkoss.bind.annotation.AfterCompose;\r
11 import org.zkoss.bind.annotation.Command;\r
12 import org.zkoss.bind.annotation.ContextParam;\r
13 import org.zkoss.bind.annotation.ContextType;\r
14 import org.zkoss.bind.annotation.Init;\r
15 import org.zkoss.bind.annotation.NotifyChange;\r
16 import org.zkoss.zk.ui.Component;\r
17 import org.zkoss.zk.ui.select.Selectors;\r
18 import org.zkoss.zk.ui.select.annotation.Wire;\r
19 import org.zkoss.zul.ListModelList;\r
20 import org.zkoss.zul.Messagebox;\r
21 import org.zkoss.zul.Window;\r
22 \r
23 import user.jobengine.db.ArchivedMedia;\r
24 import user.jobengine.db.ItemManager;\r
25 import user.jobengine.db.Store;\r
26 import user.jobengine.server.IJobEngine;\r
27 import user.jobengine.server.JobEngine;\r
28 import user.jobengine.server.scheduler.ScheduledJob;\r
29 import user.jobengine.zk.util.SessionUtil;\r
30 \r
31 public class AlternateRetrieveBatchSelectorModel extends BaseModel {\r
32         private static final Logger logger = LogManager.getLogger();\r
33         private static final String TARGETSTORENAME = "targetStoreName";\r
34         private static final String BASKET = "basket";\r
35         private static final String RECIPIENT = "recipient";\r
36         private static final String RESTORE = "Visszatöltés";\r
37 \r
38         private static final String JOBTEMPLATE = "register-user-restore.xml";\r
39 \r
40         private ListModelList<Store> stores = new ListModelList<>();\r
41 \r
42         private List<ArchivedMedia> selectedItems;\r
43 \r
44         private boolean disabled;\r
45         @Wire()\r
46         private Window wndRetrieveBatch;\r
47 \r
48         private String houseId;\r
49         private String email;\r
50         private MenuModel menuModel;\r
51 \r
52         @AfterCompose\r
53         public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
54                 menuModel = (MenuModel) SessionUtil.getAttribute(SessionUtil.MENUMODEL);\r
55                 Selectors.wireComponents(view, this, false);\r
56         }\r
57 \r
58         @Command\r
59         public void close() {\r
60                 wndRetrieveBatch.detach();\r
61         }\r
62 \r
63         @Command\r
64         @NotifyChange("basketItems")\r
65         public void execute() {\r
66                 try {\r
67                         if (stores.getSelection().isEmpty())\r
68                                 throw new Exception("A cél megadása kötelező.");\r
69 \r
70                         if (StringUtils.isBlank(email))\r
71                                 throw new Exception("Az értesítési cím megadása kötelező.");\r
72 \r
73                         IJobEngine jobEngine = JobEngine.getInstance();\r
74                         ScheduledJob scheduledJob = jobEngine.getScheduledJob(JOBTEMPLATE);\r
75                         if (scheduledJob == null)\r
76                                 throw new Exception("A sablon nem található: " + JOBTEMPLATE);\r
77 \r
78                         //String escortStoreName, String targetStoreName, List<ArchivedMedia> basket, String recipient\r
79                         Map<String, Object> parameters = scheduledJob.getJobParameters();\r
80                         parameters.put(TARGETSTORENAME, stores.getSelection().iterator().next().getName());\r
81                         parameters.put(RECIPIENT, email);\r
82                         parameters.put(BASKET, new ArrayList<ArchivedMedia>(getBasketItems()));\r
83                         jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
84 \r
85                         menuModel.clearBasket();\r
86                         wndRetrieveBatch.detach();\r
87                 } catch (Exception e) {\r
88                         Messagebox.show(e.getMessage());\r
89                         logger.catching(e);\r
90                 }\r
91 \r
92         }\r
93 \r
94         public List<ArchivedMedia> getBasketItems() {\r
95                 setDisabled(menuModel.getBasketItems() == null || menuModel.getBasketItems().size() == 0);\r
96                 return menuModel.getBasketItems();\r
97         }\r
98 \r
99         public String getEmail() {\r
100                 return email;\r
101         }\r
102 \r
103         public String getHouseId() {\r
104                 return houseId;\r
105         }\r
106 \r
107         public List<ArchivedMedia> getSelectedItems() {\r
108                 return selectedItems;\r
109         }\r
110 \r
111         public ListModelList<Store> getStores() {\r
112                 return stores;\r
113         }\r
114 \r
115         @Init\r
116         public void init() {\r
117                 setEmail(SessionUtil.getUserPrincipal().getEmail());\r
118                 List<Store> targetStores = ItemManager.getInstance().getTargetStores();\r
119                 if (targetStores != null) {\r
120 \r
121                         List<String> filters = SessionUtil.getMediaCubeConfig().getTargetRestoreFilters();\r
122                         if (filters == null || filters.size() == 0) {\r
123                                 stores.addAll(targetStores);\r
124                         } else {\r
125                                 for (Store store : targetStores) {\r
126                                         if (filters.contains(store.getName()))\r
127                                                 stores.add(store);\r
128                                 }\r
129                         }\r
130 \r
131                 }\r
132         }\r
133 \r
134         public boolean isDisabled() {\r
135                 return disabled;\r
136         }\r
137 \r
138         @Command\r
139         @NotifyChange({ "basketItems", "selectedItems" })\r
140         public void remove() {\r
141                 menuModel.removeBasketItems(selectedItems);\r
142         }\r
143 \r
144         public void setDisabled(boolean disabled) {\r
145                 this.disabled = disabled;\r
146         }\r
147 \r
148         public void setEmail(String email) {\r
149                 this.email = email;\r
150         }\r
151 \r
152         public void setHouseId(String houseId) {\r
153                 this.houseId = houseId;\r
154         }\r
155 \r
156         public void setSelectedItems(List<ArchivedMedia> selectedItems) {\r
157                 this.selectedItems = selectedItems;\r
158         }\r
159 \r
160         public void setStores(ListModelList<Store> stores) {\r
161                 this.stores = stores;\r
162         }\r
163 \r
164 }