KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > raptus > owxv3 > api > components > ComponentContainerAction


1 /*
2  * eAdmin/OWX
3  * Copyright (C) 1996-2003 OWX-Project Team <owx-team@gmx.net>
4  */

5
6
7 package com.raptus.owxv3.api.components;
8
9 import java.util.Enumeration JavaDoc;
10
11 import javax.servlet.http.*;
12
13 import com.raptus.owxv3.api.*;
14 import com.raptus.owxv3.modules.base.*;
15
16 /**
17  *
18  * <hr>
19  * <table width="100%" border="0">
20  * <tr>
21  * <td width="24%"><b>Filename</b></td><td width="76%">ComponentContainerAction.java</td>
22  * </tr>
23  * <tr>
24  * <td width="24%"><b>Author</b></td><td width="76%">Guy Zürcher (gzuercher@raptus.com)</td>
25  * </tr>
26  * <tr>
27  * <td width="24%"><b>Date</b></td><td width="76%">3th of July 2001</td>
28  * </tr>
29  * </table>
30  * <hr>
31  * <table width="100%" border="0">
32  * <tr>
33  * <td width="24%"><b>Date / Author</b></td><td width="76%"><b>Changes</b></td>
34  * </tr>
35  * </table>
36  * <hr>
37  */

38 public class ComponentContainerAction extends Object JavaDoc
39 {
40     /**
41      *
42      */

43     public boolean initialize(ComponentContainer cc, HttpServletRequest request)
44     {
45         HttpSession session = request.getSession();
46
47         // loop through all allocated components
48

49         if(cc.getComponents()!=null)
50         {
51             Enumeration JavaDoc enuCmps = cc.getComponents().elements();
52             while(enuCmps.hasMoreElements())
53             {
54                 ComponentBean cb = (ComponentBean) enuCmps.nextElement();
55
56                 cb.setVModule(cc.getVModule()); // let the component know its belonging
57
session.setAttribute(cb.getData().getID(), cb); // put the component into the session
58
}//end while
59
}//end if
60

61
62         cc.setURI(request.getServletPath()); // tell the container about the request
63
return true;
64     }
65
66     /**
67      *returns -1 if an error occured
68      *return 0 if a new entry can't be added due to the entry limit reached
69      *return 1 if everything is OK
70      */

71     public int process(ComponentContainer cc, HttpServletRequest request, BusinessObject bo)
72     {
73         // first open or close the corresponding component (if necessary)
74
processOpenClose(cc, request);
75
76         // ask for params
77
int ID = OmniaWebAction.convertToInteger(ComponentConstants.COMPONENT_NULL_DATAID,
78                                                  request.getParameter(ComponentConstants.HTTPGET_PARAM_DATAID));
79         String JavaDoc action = request.getParameter(ComponentConstants.HTTPGET_PARAM_ACTION);
80
81         if( action!=null && action.equalsIgnoreCase(ComponentConstants.COMPONENT_ACTION_NEW))
82         {
83             //New entry
84
cc.closeAllComponents();
85             if(! ((BaseObject) bo).isNewEntryAllowed() )
86             {
87                 cc.setDataID( ComponentConstants.COMPONENT_NULL_DATAID );
88                 return 0;
89             }
90
91             if( ((ComponentBusinessObject) bo).loadComponentDefaultData(cc) ) return 1;
92             else return -1;
93         }
94         else if( (cc.getDataID() == ComponentConstants.COMPONENT_NULL_DATAID) &&
95             (ID == ComponentConstants.COMPONENT_NULL_DATAID) )
96         {
97
98            if(! ((BaseObject) bo).isNewEntryAllowed() ){
99                cc.closeAllComponents();
100                return 0;
101            }
102         }
103         //else if( (cc.getDataID() != ID) && (ID >= 0) )
104
else if( ID >= 0 )
105         {
106             cc.setDataID(ID);
107             cc.closeAllComponents();
108
109             if( ((ComponentBusinessObject) bo).loadComponentData(cc) )
110                 return 1;
111             else
112                 return -1;
113         }
114
115         /*
116          *check if action is save
117          */

118         if(action != null && action.equalsIgnoreCase(ComponentConstants.COMPONENT_ACTION_SAVE))
119         {
120             cc.closeAllComponents();
121
122             if( ((ComponentBusinessObject) bo).saveComponentData(cc) ) return 2;
123             else return -1;
124         }
125
126         String JavaDoc openComponent = request.getParameter(ComponentConstants.HTTPGET_PARAM_OPEN);
127
128         if( openComponent!=null && openComponent.equalsIgnoreCase(BaseConstants.COMPONENT_PREVIEW_ID) ){
129             fillDataForPreview(cc,bo);
130         }
131         String JavaDoc leftComponentOpen = request.getParameter(ComponentConstants.HTTPGET_PARAM_LEFTOPEN);
132         if(leftComponentOpen!=null)
133         {
134             cc.setLeftComponentOpen( !cc.getLeftComponentOpen() );
135         }
136         return 1;
137     }
138
139
140     /**
141      *
142      */

143     protected void processOpenClose(ComponentContainer cc, HttpServletRequest request)
144     {
145         String JavaDoc openComponent = request.getParameter(ComponentConstants.HTTPGET_PARAM_OPEN);
146         String JavaDoc closeComponent = request.getParameter(ComponentConstants.HTTPGET_PARAM_CLOSE);
147
148         // decide wether to open or close
149
boolean wantOpen = false;
150         ComponentBean cb = null;
151         if(openComponent != null)
152         {
153             cb = cc.getComponent(openComponent);
154             wantOpen = true;
155         }
156         else if(closeComponent != null)
157             cb = cc.getComponent(closeComponent);
158
159         if(cb != null)
160         {
161             // if NOT more than one component can be open (active) the
162
// others have to be closed
163
if(cc.getOpenMultiple() == false)
164                 cc.closeAllComponents();
165
166             cb.setOpen(wantOpen);
167         }
168     }
169
170     /**
171      *
172      */

173
174     protected void fillDataForPreview(ComponentContainer cc,BusinessObject bo){
175         Enumeration JavaDoc enuCmps = cc.getComponents().elements();
176         while(enuCmps.hasMoreElements())
177         {
178             ComponentBean cb = (ComponentBean) enuCmps.nextElement();
179             String JavaDoc cmpID = cb.getData().getID();
180             if( cmpID.equals(BaseConstants.COMPONENT_PREVIEW_ID) )
181             {
182                 ((BaseObject)bo).loadPreviewData(cc, (CmpPreviewBean)cb);
183                 break;
184             }
185         }//end while
186

187
188     }
189
190
191 }
192
193 // eof
194
Popular Tags