KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infoglue > cms > applications > contenttool > actions > ViewMultiSelectContentTreeForServiceBindingAction


1 /* ===============================================================================
2  *
3  * Part of the InfoGlue Content Management Platform (www.infoglue.org)
4  *
5  * ===============================================================================
6  *
7  * Copyright (C)
8  *
9  * This program is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License version 2, as published by the
11  * Free Software Foundation. See the file LICENSE.html for more information.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
19  * Place, Suite 330 / Boston, MA 02111-1307 / USA.
20  *
21  * ===============================================================================
22  */

23
24 package org.infoglue.cms.applications.contenttool.actions;
25
26 import java.util.ArrayList JavaDoc;
27 import java.util.Iterator JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.StringTokenizer JavaDoc;
30
31 import org.apache.log4j.Logger;
32 import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
33 import org.infoglue.cms.controllers.kernel.impl.simple.AvailableServiceBindingController;
34 import org.infoglue.cms.controllers.kernel.impl.simple.ContentController;
35 import org.infoglue.cms.controllers.kernel.impl.simple.QualifyerController;
36 import org.infoglue.cms.controllers.kernel.impl.simple.RepositoryController;
37 import org.infoglue.cms.entities.management.ServiceDefinitionVO;
38 import org.infoglue.cms.entities.structure.QualifyerVO;
39 import org.infoglue.cms.entities.structure.ServiceBindingVO;
40 import org.infoglue.cms.util.ConstraintExceptionBuffer;
41
42 /**
43  * This action shows the Content-tree when binding stuff.
44  */

45
46 public class ViewMultiSelectContentTreeForServiceBindingAction extends InfoGlueAbstractAction
47 {
48     private final static Logger logger = Logger.getLogger(ViewMultiSelectContentTreeForServiceBindingAction.class.getName());
49
50     private static final long serialVersionUID = 1L;
51     
52     private Integer JavaDoc siteNodeVersionId;
53     private Integer JavaDoc repositoryId;
54     private Integer JavaDoc availableServiceBindingId;
55     private Integer JavaDoc serviceDefinitionId;
56     private Integer JavaDoc bindingTypeId;
57     private ConstraintExceptionBuffer ceb;
58     private Integer JavaDoc contentId;
59     private ServiceDefinitionVO singleServiceDefinitionVO;
60     private String JavaDoc qualifyerXML;
61     private String JavaDoc tree;
62     private String JavaDoc exp="";
63     private List JavaDoc repositories;
64     
65     //Test
66
private String JavaDoc qualifyerString = "";
67     private List JavaDoc qualifyers = null;
68     private Integer JavaDoc entityId;
69     private Integer JavaDoc direction;
70     private Integer JavaDoc oldSortOrder;
71     private Integer JavaDoc serviceBindingId;
72     
73     // SS test drag drop
74
private Integer JavaDoc requestedPosition;
75     
76     private ServiceBindingVO serviceBindingVO = null;
77    
78   
79     public ViewMultiSelectContentTreeForServiceBindingAction()
80     {
81         this(new ServiceBindingVO());
82     }
83     
84     public ViewMultiSelectContentTreeForServiceBindingAction(ServiceBindingVO serviceBindingVO)
85     {
86         this.serviceBindingVO = serviceBindingVO;
87         this.ceb = new ConstraintExceptionBuffer();
88     }
89
90     public void setSiteNodeVersionId(Integer JavaDoc siteNodeVersionId)
91     {
92         this.siteNodeVersionId = siteNodeVersionId;
93     }
94
95     public void setRepositoryId(Integer JavaDoc repositoryId)
96     {
97         this.repositoryId = repositoryId;
98     }
99
100     public void setAvailableServiceBindingId(Integer JavaDoc availableServiceBindingId)
101     {
102         this.availableServiceBindingId = availableServiceBindingId;
103     }
104
105     public void setServiceDefinitionId(Integer JavaDoc serviceDefinitionId)
106     {
107         this.serviceDefinitionId = serviceDefinitionId;
108     }
109
110     public void setBindingTypeId(Integer JavaDoc bindingTypeId)
111     {
112         this.serviceBindingVO.setBindingTypeId(bindingTypeId);
113     }
114
115     public void setPath(String JavaDoc path)
116     {
117         this.serviceBindingVO.setPath(path);
118     }
119     
120     public Integer JavaDoc getSiteNodeVersionId()
121     {
122         return this.siteNodeVersionId;
123     }
124
125     public Integer JavaDoc getContentId()
126     {
127         return this.contentId;
128     }
129         
130     public Integer JavaDoc getRepositoryId()
131     {
132         return this.repositoryId;
133     }
134
135     public Integer JavaDoc getAvailableServiceBindingId()
136     {
137         return this.availableServiceBindingId;
138     }
139     
140     public Integer JavaDoc getServiceDefinitionId()
141     {
142         return this.singleServiceDefinitionVO.getServiceDefinitionId();
143     }
144     
145     public Integer JavaDoc getBindingTypeId()
146     {
147         return this.bindingTypeId;
148     }
149
150     public ServiceDefinitionVO getSingleServiceDefinitionVO()
151     {
152         return this.singleServiceDefinitionVO;
153     }
154
155     public void setQualifyerXML(String JavaDoc qualifyerXML)
156     {
157         this.qualifyerXML = qualifyerXML;
158     }
159     
160     public String JavaDoc getQualifyerXML()
161     {
162         return this.qualifyerXML;
163     }
164     
165     
166     
167     //Test
168
public void setQualifyerString(String JavaDoc qualifyerString)
169     {
170         this.qualifyerString = qualifyerString;
171     }
172
173     public void setEntityId(Integer JavaDoc entityId)
174     {
175         this.entityId = entityId;
176     }
177
178     public void setDirection(Integer JavaDoc direction)
179     {
180         this.direction = direction;
181     }
182
183     public void setOldSortOrder(Integer JavaDoc oldSortOrder)
184     {
185         this.oldSortOrder = oldSortOrder;
186     }
187
188     public String JavaDoc getQualifyerString()
189     {
190         return this.qualifyerString;
191     }
192     
193     public List JavaDoc getQualifyers()
194     {
195         return this.qualifyers;
196     }
197     
198     public void setServiceBindingId(Integer JavaDoc serviceBindingId)
199     {
200         this.serviceBindingId = serviceBindingId;
201     }
202     
203     public Integer JavaDoc getServiceBindingId()
204     {
205         return this.serviceBindingId;
206     }
207     
208     public String JavaDoc getTree()
209     {
210         return tree;
211     }
212
213     public void setTree(String JavaDoc string)
214     {
215         tree = string;
216     }
217     
218     public String JavaDoc getCurrentAction()
219     {
220         return "ViewMultiSelectContentTreeForServiceBinding.action";
221     }
222     
223     public List JavaDoc getRepositories()
224     {
225         return repositories;
226     }
227     
228     public String JavaDoc getQualifyerPath(String JavaDoc entityId)
229     {
230         try
231         {
232             return ContentController.getContentController().getContentVOWithId(new Integer JavaDoc(entityId)).getName();
233         }
234         catch(Exception JavaDoc e)
235         {
236             e.printStackTrace();
237         }
238         return "";
239     }
240      
241     private void initialize() throws Exception JavaDoc
242     {
243         this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), true);
244
245         List JavaDoc serviceDefinitions = AvailableServiceBindingController.getController().getServiceDefinitionVOList(this.availableServiceBindingId);
246         if(serviceDefinitions.size() == 1)
247             this.singleServiceDefinitionVO = (ServiceDefinitionVO)serviceDefinitions.get(0);
248         
249     }
250          
251     public String JavaDoc doExecute() throws Exception JavaDoc
252     {
253         this.repositories = RepositoryController.getController().getAuthorizedRepositoryVOList(this.getInfoGluePrincipal(), true);
254         
255         if(this.repositoryId == null)
256             this.repositoryId = RepositoryController.getController().getFirstRepositoryVO().getRepositoryId();
257         
258         List JavaDoc serviceDefinitions = AvailableServiceBindingController.getController().getServiceDefinitionVOList(this.availableServiceBindingId);
259         if(serviceDefinitions == null || serviceDefinitions.size() == 0)
260         {
261             //throw new SystemException();
262
return "error";
263
264         }
265         else if(serviceDefinitions.size() == 1)
266         {
267             this.singleServiceDefinitionVO = (ServiceDefinitionVO)serviceDefinitions.get(0);
268             if(this.serviceBindingId != null)
269                 this.qualifyers = QualifyerController.getBindingQualifyers(this.serviceBindingId);
270     
271             return "success";
272         }
273         else
274         {
275             return "chooseService";
276         }
277     }
278     
279     public String JavaDoc doChangeRepository() throws Exception JavaDoc
280     {
281         this.qualifyers = parseQualifyers(qualifyerString);
282         
283         initialize();
284             
285         return "success";
286     }
287     
288     public String JavaDoc doChangeTree() throws Exception JavaDoc
289     {
290         this.qualifyers = parseQualifyers(qualifyerString);
291         
292         initialize();
293             
294         return "success";
295     }
296     
297     public String JavaDoc doAddQualifyer() throws Exception JavaDoc
298     {
299         if(this.qualifyerString != null && !this.qualifyerString.equals(""))
300             this.qualifyerString += "," + this.entityId;
301         else
302             this.qualifyerString += this.entityId;
303             
304         this.qualifyers = parseQualifyers(qualifyerString);
305         
306         initialize();
307             
308         return "success";
309     }
310
311     public String JavaDoc doAddQualifyerAtPosition() throws Exception JavaDoc
312     {
313         if(this.qualifyerString == null || this.qualifyerString.equals("") || this.requestedPosition == null )
314             this.qualifyerString += "," + this.entityId;
315         else
316         {
317             StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
318             StringTokenizer JavaDoc qs = new StringTokenizer JavaDoc(qualifyerString, ",");
319             int i = 0;
320             while (qs.hasMoreTokens())
321             {
322                 if(i++==this.requestedPosition.intValue())
323                     buf.append(this.entityId + ",");
324
325                 String JavaDoc qToken = qs.nextToken();
326                 if(qToken.length() > 0)
327                     buf.append(qToken + ",");
328             }
329             this.qualifyerString = buf.toString();
330         }
331         this.qualifyers = parseQualifyers(qualifyerString);
332         
333         initialize();
334             
335         return "success";
336     }
337     public String JavaDoc doMoveQualifyerToPosition() throws Exception JavaDoc
338     {
339         this.entityId = new Integer JavaDoc(((QualifyerVO) parseQualifyers(qualifyerString).get(oldSortOrder.intValue())).getValue());
340         this.qualifyers = parseQualifyers(qualifyerString);
341         this.qualifyers = deleteQualifyer(this.oldSortOrder, this.qualifyers);
342         this.qualifyerString = parseQualifyers(this.qualifyers);
343         if(requestedPosition.intValue()==-1)
344             return doAddQualifyer();
345         
346         if (oldSortOrder.intValue() < requestedPosition.intValue()) requestedPosition=new Integer JavaDoc(requestedPosition.intValue()-1);
347         return doAddQualifyerAtPosition();
348     }
349
350     public String JavaDoc doMoveQualifyer() throws Exception JavaDoc
351     {
352         logger.info("------------------------------------->");
353         this.qualifyers = parseQualifyers(qualifyerString);
354         this.qualifyers = moveQualifyer(this.direction, this.oldSortOrder, this.qualifyers);
355
356         initialize();
357         
358         return "success";
359     }
360
361
362     public String JavaDoc doDeleteQualifyer() throws Exception JavaDoc
363     {
364         logger.info("------------------------------------->");
365         this.qualifyers = parseQualifyers(qualifyerString);
366         this.qualifyers = deleteQualifyer(this.oldSortOrder, this.qualifyers);
367         
368         initialize();
369         
370         return "success";
371     }
372         
373     private List JavaDoc parseQualifyers(String JavaDoc qualifyerString)
374     {
375         List JavaDoc qualifyers = new ArrayList JavaDoc();
376         StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(qualifyerString, ",");
377         int i = 0;
378         while (st.hasMoreTokens())
379         {
380             String JavaDoc next = st.nextToken();
381             QualifyerVO qualifyerVO = new QualifyerVO();
382             qualifyerVO.setName("contentId");
383             qualifyerVO.setValue(next);
384             qualifyerVO.setSortOrder(new Integer JavaDoc(i));
385             qualifyers.add(qualifyerVO);
386             i++;
387         }
388         return qualifyers;
389     }
390     private String JavaDoc parseQualifyers(List JavaDoc qualifyers)
391     {
392         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
393         Iterator JavaDoc i = qualifyers.iterator();
394         while(i.hasNext())
395         {
396             QualifyerVO q = (QualifyerVO) i.next();
397             buf.append(q.getValue() + ",");
398         }
399         return buf.toString();
400     }
401     
402
403     private List JavaDoc moveQualifyer(Integer JavaDoc direction, Integer JavaDoc oldSortOrder, List JavaDoc qualifyers)
404     {
405         logger.info("-------------------------------------> About to move the qualifyer in direction " + direction + " and old sortOrder was " + oldSortOrder);
406         ArrayList JavaDoc newQualifyers = new ArrayList JavaDoc();
407         
408         Iterator JavaDoc iterator = qualifyers.iterator();
409         int i = 0;
410         while(iterator.hasNext())
411         {
412             QualifyerVO qualifyer = (QualifyerVO)iterator.next();
413             logger.info("Found qualifyer " + qualifyer.getValue() + ":" + qualifyer.getSortOrder());
414             if(qualifyer.getSortOrder().equals(oldSortOrder) && direction.intValue() == 0) //down
415
{
416                 logger.info("About to move it down...");
417                 if(iterator.hasNext())
418                 {
419                     QualifyerVO nextQualifyer = (QualifyerVO)iterator.next();
420                     logger.info("nextQualifyer " + nextQualifyer.getValue() + ":" + nextQualifyer.getSortOrder());
421                     nextQualifyer.setSortOrder(qualifyer.getSortOrder());
422                     logger.info("Set the nextQualifyer sortOrder to " + qualifyer.getSortOrder());
423                     qualifyer.setSortOrder(new Integer JavaDoc(qualifyer.getSortOrder().intValue() + 1));
424                     logger.info("Set the qualifyer sortOrder to " + qualifyer.getSortOrder());
425                     newQualifyers.add(nextQualifyer);
426                     newQualifyers.add(qualifyer);
427                 }
428                 else
429                     newQualifyers.add(qualifyer);
430                         
431             }
432             else if(qualifyer.getSortOrder().equals(oldSortOrder) && direction.intValue() == 1) //up
433
{
434                 logger.info("About to move it up...");
435                 if(i > 0)
436                 {
437                     QualifyerVO previousQualifyer = (QualifyerVO)newQualifyers.get(i-1);
438                     logger.info("Previous qualifyer " + previousQualifyer.getValue() + ":" + previousQualifyer.getSortOrder());
439                     previousQualifyer.setSortOrder(qualifyer.getSortOrder());
440                     logger.info("Set the previous qualifyer sortOrder to " + qualifyer.getSortOrder());
441                     qualifyer.setSortOrder(new Integer JavaDoc(qualifyer.getSortOrder().intValue() - 1));
442                     logger.info("Set the qualifyer sortOrder to " + qualifyer.getSortOrder());
443                     newQualifyers.remove(qualifyer);
444                     newQualifyers.add(i-1, qualifyer);
445                 }
446                 else
447                     newQualifyers.add(qualifyer);
448             }
449             else
450                 newQualifyers.add(qualifyer);
451         
452             i++;
453         }
454         
455         return newQualifyers;
456     }
457
458     private List JavaDoc deleteQualifyer(Integer JavaDoc oldSortOrder, List JavaDoc qualifyers)
459     {
460         ArrayList JavaDoc newQualifyers = new ArrayList JavaDoc();
461         
462         Iterator JavaDoc iterator = qualifyers.iterator();
463         int i = 0;
464         while(iterator.hasNext())
465         {
466             QualifyerVO qualifyer = (QualifyerVO)iterator.next();
467             logger.info("-------------------------------->Found qualifyer " + qualifyer.getValue() + ":" + qualifyer.getSortOrder());
468             if(!qualifyer.getSortOrder().equals(oldSortOrder))
469             {
470                 logger.info("qualifyer:" + qualifyer.getSortOrder());
471                 logger.info("qualifyer:" + qualifyer.getValue());
472                 logger.info("Adding this qualifyer again as it did not match the delete-one:" + oldSortOrder);
473                 qualifyer.setSortOrder(new Integer JavaDoc(i));
474                 newQualifyers.add(qualifyer);
475                 i++;
476             }
477         
478         }
479         
480         return newQualifyers;
481     }
482
483     /**
484      * @return
485      */

486     public String JavaDoc getExp() {
487         return exp;
488     }
489
490     /**
491      * @param string
492      */

493     public void setExp(String JavaDoc string) {
494         exp = string;
495     }
496
497     /**
498      * @return
499      */

500     public Integer JavaDoc getRequestedPosition() {
501         return requestedPosition;
502     }
503
504     /**
505      * @param integer
506      */

507     public void setRequestedPosition(Integer JavaDoc integer) {
508         requestedPosition = integer;
509     }
510
511 }
512
Popular Tags