source: vanHelsing/trunk/gui/src/de/dass_it/vanhelsing/gui/ConfigurationBean.java@ 858

Last change on this file since 858 was 858, checked in by tobias, on Apr 9, 2010 at 10:56:07 AM

visual design slightly modified. tree functions extended

File size: 10.3 KB
Line 
1package de.dass_it.vanhelsing.gui;
2
3import java.lang.reflect.Method;
4import java.util.ArrayList;
5
6import javax.faces.event.ActionEvent;
7import javax.faces.event.ValueChangeEvent;
8import javax.faces.model.SelectItem;
9import javax.swing.tree.DefaultMutableTreeNode;
10import javax.swing.tree.DefaultTreeModel;
11import de.dass_it.vanhelsing.gui.items.*;
12import de.dass_it.www.vanhelsing.*;
13import de.dass_it.www.vanhelsing.VanHelsingCallbackHandler.*;
14import de.dass_it.www.vanhelsing.VanHelsingStub.*;
15
16/*
17 * List all Bacula configuration components by name
18 */
19public class ConfigurationBean extends TreeNavigation {
20
21 private DefaultTreeModel tree;
22 private ArrayList<ViewItem> selectedObject;
23 private String selectedId;
24
25 public ConfigurationBean() {
26 init();
27 }
28 private void init(){
29 DefaultMutableTreeNode root = new DefaultMutableTreeNode();
30 DefaultMutableTreeNode header;
31 DefaultMutableTreeNode leaf;
32 String type;
33 ListResourcesType lrt;
34 GetResourceType grt;
35 DefaultMutableTreeNode myNode;
36 ResourceInfo[] ri;
37 SimpleResource sr;
38 // ((ClientItem)selectedObject).setName("ClientNameTest");
39
40 Client c = new Client();
41 String[] nodes = { "Director", "Storage", "Autochanger",
42 "Client", "FileSet", "FDClient", "Schedule", "SDStorage",
43 "Console", "Catalog", "SDDevice", "Job", "JobDefs", "Messages",
44 "Pool" };
45 // String[] nodes = {"Client"};
46 setTree(super.createTree(root, nodes, "Configuration"));
47
48 // \forall header wird eine ResourceList[] angefragt
49
50 for (int i = 0; i < tree.getChildCount(root); i++) {
51 header = (DefaultMutableTreeNode) tree.getChild(root, i);
52 type = ((UserObjectItemType) header.getUserObject())
53 .getUserObject().getResType();
54 lrt = new ListResourcesType();
55 lrt.setDirector("bacula-dir");
56 lrt.setResourceType(type);
57 ri = c.getListResources(lrt);
58 if (ri == null || ri.length == 0)
59 continue;
60 for (int j = 0; j < ri.length; j++) {
61 // myNode = null;
62 myNode = addNode(header, type, ri[j]);
63 // Node mit Daten befüllen
64 grt = new GetResourceType();
65 grt.setDirector(lrt.getDirector());
66 grt.setResId(ri[j].getResId());
67 sr = c.getSimpleResource(grt);
68 myNode = addNode(myNode, type, sr.getResourceAttributeType());
69 if (myNode != null) {
70 header.add(myNode);
71 }
72 }
73 }
74 /*
75 * for (int i = 0; i < tree.getChildCount(root); i++){ header =
76 * (DefaultMutableTreeNode)tree.getChild(root, i);
77 *
78 * for (int j = 0; j < tree.getChildCount(header); j++){ leaf =
79 * (DefaultMutableTreeNode)tree.getChild(header, j); type =
80 * ((UserObjectItemType
81 * )leaf.getUserObject()).getUserObject().getResType(); grt = new
82 * GetResourceType(); grt.setDirector("bacula-dir");
83 * grt.setResId(((ItemType
84 * )(((UserObjectItemType)leaf.getUserObject()).getUserObject
85 * ())).getResId()); sr = c.getSimpleResource(grt);
86 * sr.getResourceAttributeType(); myNode = addNode(leaf, type,
87 * sr.getResourceAttributeType()); if (myNode != null){
88 * leaf.add(myNode); }
89 *
90 * } }
91 */
92
93 }
94
95
96 public void userObjectItemNodeSelected(ActionEvent ae) {
97 DefaultMutableTreeNode node;
98 UserObjectItem userObject;
99 selectedObject = new ArrayList<ViewItem>();
100 String Id = BeanUtil.getRequestParameter("userObject.resId");
101 String selected = BeanUtil.getRequestParameter("ice.event.shift");
102 node = getNode(Id, tree);
103 if (selected.equals("true")){
104 ((UserObjectItemType)node.getUserObject()).switchSelected();
105 }
106 String type = ((UserObjectItem) ((UserObjectItemType) node
107 .getUserObject()).getUserObject()).getResType();
108 String resName = ((ItemType)((UserObjectItem) ((UserObjectItemType) node
109 .getUserObject()).getUserObject())).getResName();
110 String director = ((ItemType)((UserObjectItem) ((UserObjectItemType) node
111 .getUserObject()).getUserObject())).getDirector();
112 String classType = "de.dass_it.vanhelsing.gui.items." + type + "Item";
113 String accessType = BeanUtil.getAccessType(type.toLowerCase());
114 // Daten aus dem UserObjectItem extrahieren
115 try {
116 UserObjectItem item = ((UserObjectItemType) (node.getUserObject()))
117 .getUserObject();
118 Class c = ((UserObjectItemType) (node.getUserObject()))
119 .getUserObject().getClass();
120 Method[] m = c.getDeclaredMethods();
121 String keyValue;
122 String key;
123 ViewItem vi;
124 for (Method n : m) {
125 if (n.getName().startsWith("get")) {
126 keyValue = (String) n.invoke(item, (Object[]) null);
127 if (keyValue == null)
128 continue;
129 key = n.getName().substring(3);
130 vi = new ViewItem();
131 vi.setResId(new Integer(Id));
132 vi.setKey(key);
133 vi.setKeyValue(keyValue);
134 vi.setResType(type);
135 vi.setResName(resName);
136 vi.setDirector(director);
137 vi.setRendererFlag(BeanUtil.getRenderer(accessType, key));
138 vi.setRequired(BeanUtil.getRequired(accessType, key));
139 if (vi.getSelectOneMenu() != null){
140 DefaultMutableTreeNode[] dmtn = getChildNodes(tree, vi.getKey());
141 if (dmtn != null) {
142 SelectItem[] si = new SelectItem[dmtn.length];
143 String objectType;
144 for (int i = 0; i < dmtn.length; i++){
145 UserObjectItem nodeObject = ((UserObjectItemType)dmtn[i].getUserObject()).getUserObject();
146 objectType = "de.dass_it.vanhelsing.gui.items." + vi.getKey() +"Item";
147 Class subClass = Class.forName(objectType);
148 Class myClass = nodeObject.getClass().asSubclass(subClass);
149 Method o = myClass.getMethod("getName", (Class[])null);
150 si[i] = new SelectItem((String)o.invoke(nodeObject, (Object[])null),
151 (String)o.invoke(nodeObject, (Object[])null));
152
153 }
154 vi.setKeyValueList(si);
155 }
156 }
157 selectedObject.add(vi);
158 }
159 selectedObject.trimToSize();
160 }
161 } catch (Exception e) {
162 e.printStackTrace();
163 }
164 }
165 private DefaultMutableTreeNode[] getChildNodes(DefaultTreeModel tree2, String key) {
166 DefaultMutableTreeNode[] dmtn;
167 DefaultMutableTreeNode root = (DefaultMutableTreeNode)tree2.getRoot();
168 DefaultMutableTreeNode node;
169 for (int i = 0; i< root.getChildCount(); i++){
170 node = (DefaultMutableTreeNode)root.getChildAt(i);
171 if (((UserObjectItemType)(node.getUserObject())).getUserObject().getResType().equals(key)){
172 dmtn = new DefaultMutableTreeNode[node.getChildCount()];
173 for (int j = 0; j < node.getChildCount(); j++){
174 dmtn[j] = (DefaultMutableTreeNode)node.getChildAt(j);
175 }
176 return dmtn;
177 }
178 }
179 return null;
180 }
181 public void newResourceButtonListener(ActionEvent ae){
182 DefaultMutableTreeNode node;
183 UserObjectItem userObject;
184 selectedObject = new ArrayList<ViewItem>();
185 String Id = BeanUtil.getRequestParameter("userObject.ResId");
186 String shift = BeanUtil.getRequestParameter("ice.event.shift");
187 System.err.println(shift);
188 if (Id == null){
189 return;
190 }
191 node = getNode(Id, tree);
192 String type = ((UserObjectItem) ((UserObjectItemType) node
193 .getUserObject()).getUserObject()).getResType();
194 ViewItem vi;
195 String[] val;
196 try{
197 String type2 = "de.dass_it.vanhelsing.gui.items." + type + "Item";
198 Class newClass = Class.forName(type2);
199 for (Method m : newClass.getDeclaredMethods()){
200 if (m.getName().startsWith("get")) {
201 vi = new ViewItem();
202 vi.setKey(m.getName().substring(3));
203 vi.setRendererFlag(BeanUtil.getRenderer(type, vi.getKey()));
204 if (vi.getSelectOneMenu() != null){
205 DefaultMutableTreeNode[] dmtn = getChildNodes(tree, vi.getKey());
206 if (dmtn != null) {
207 SelectItem[] si = new SelectItem[dmtn.length];
208 String objectType;
209 for (int i = 0; i < dmtn.length; i++){
210 UserObjectItem nodeObject = ((UserObjectItemType)dmtn[i].getUserObject()).getUserObject();
211 objectType = "de.dass_it.vanhelsing.gui.items." + vi.getKey() +"Item";
212 Class subClass = Class.forName(objectType);
213 Class myClass = nodeObject.getClass().asSubclass(subClass);
214 Method o = myClass.getMethod("getName", (Class[])null);
215 si[i] = new SelectItem((String)o.invoke(nodeObject, (Object[])null),
216 (String)o.invoke(nodeObject, (Object[])null));
217 //System.err.println("si[i]"+si[i].getLabel());
218
219 }
220 vi.setKeyValueList(si);
221 }
222 }
223 if (vi.getInputText() != null){
224 vi.setValue(BeanUtil.getProperty("director."+type+"."+vi.getKey()+".def"));
225 }
226 }
227 }
228 } catch (Exception e){
229 e.printStackTrace();
230 }
231
232 }
233 public void userObjectItemOptionSelected(ValueChangeEvent vce){
234
235 }
236
237 public void reloadResourceButtonListener(ActionEvent ae){
238 init();
239 }
240 public void deleteResourceButtonListener(ActionEvent ae){
241 BeanUtil.setInfoMessage(null, "Diese Methode ist noch nicht implementiert.");
242 }
243
244 public void saveButtonListener(ActionEvent ae) {
245 if (selectedObject == null){
246 BeanUtil.setInfoMessage(null, "bitte eine Resource zum Ändern auswählen");
247 } else {
248 Client c = new Client();
249 ResourceInfo ri = new ResourceInfo();
250 SetSimpleResourceResponse s2r2;
251 ri.setDirector( selectedObject.get(0).getDirector() );
252 ri.setResId( selectedObject.get(0).getResId() );
253 ri.setResName( selectedObject.get(0).getResName() );
254 ri.setResType( selectedObject.get(0).getResType() );
255 // ResourceAttribute
256 String key, value;
257 ResourceAttributeType[] ra = new ResourceAttributeType[selectedObject.size()];
258 for (int i = 0; i < selectedObject.size(); i++) {
259 key = selectedObject.get(i).getKey();
260 value = selectedObject.get(i).getKeyValue();
261 ra[i] = new ResourceAttributeType();
262 ra[i].setKey(key);
263 ra[i].setValue(value);
264 }
265 SetSimpleResource s2r = new SetSimpleResource();
266 s2r.setResAttribute(ra);
267 s2r.setResInfo(ri);
268 s2r2 = c.setSimpleResource(s2r);
269 System.err.println("Status setSimpleRes: "+s2r2.getStatus());
270 BeanUtil.setErrorMessage(null, "Status setSimpleRessource: "+s2r2.getStatus());
271
272 /*String status = s2r2.getStatus();
273 if (selectedObject.get(0) != null){
274 selectedObject.get(0).setResId(s2r2.getResId());
275 }*/
276 // TODO: write ResId to selectedObject
277 // selectedObject.get(0).setResId(grt.getResId());
278 // valueChangeEffect.setFired(false);
279 }
280 }
281
282 public void setTree(DefaultTreeModel tree) {
283 this.tree = tree;
284 }
285
286 public DefaultTreeModel getTree() {
287 return tree;
288 }
289
290 public ArrayList<ViewItem> getSelectedObject() {
291 return selectedObject;
292 }
293
294 public void setSelectedObject(ArrayList<ViewItem> selectedObject) {
295 this.selectedObject = selectedObject;
296 }
297 public int getSelectedId(){
298 if (selectedObject != null){
299 if (selectedObject.size() > 0){
300 return selectedObject.get(0).getResId();
301 }
302 }
303 return -1;
304 }
305
306}
Note: See TracBrowser for help on using the repository browser.