KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jahia > views > engines > datepicker > actions > DatePickerAction


1 package org.jahia.views.engines.datepicker.actions;
2
3 import java.io.IOException JavaDoc;
4 import java.util.Date JavaDoc;
5 import java.text.DateFormat JavaDoc;
6 import java.util.Properties JavaDoc;
7 import java.util.Vector JavaDoc;
8
9 import javax.servlet.ServletException JavaDoc;
10 import javax.servlet.http.HttpServletRequest JavaDoc;
11 import javax.servlet.http.HttpServletResponse JavaDoc;
12
13 import org.apache.struts.action.ActionForm;
14 import org.apache.struts.action.ActionForward;
15 import org.apache.struts.action.ActionMapping;
16 import org.apache.struts.action.ActionMessage;
17 import org.apache.struts.action.ActionMessages;
18
19 import org.jahia.exceptions.JahiaException;
20 import org.jahia.views.engines.JahiaEngineButtonsHelper;
21 import org.jahia.views.engines.JahiaEngineCommonData;
22 import org.jahia.views.engines.datepicker.DatePicker;
23 import org.jahia.views.engines.datepicker.DatePickerData;
24 import org.jahia.views.engines.datepicker.DatePickerEvent;
25
26 /**
27  * Date Picker Action Dispatcher
28  *
29  */

30 public class DatePickerAction extends org.apache.struts.actions.DispatchAction {
31
32     private static final String JavaDoc ENGINE_TITLE = "Date Picker";
33     public static final String JavaDoc DATE_EVENT_PARAM = "dateEventParam";
34
35     /**
36      * Display the calendar.
37      *
38      * @param mapping
39      * @param form
40      * @param request
41      * @param response
42      * @return
43      * @throws IOException
44      * @throws ServletException
45      */

46     public ActionForward displayCalendar(ActionMapping mapping,
47                                          ActionForm form,
48                                          HttpServletRequest JavaDoc request,
49                                          HttpServletResponse JavaDoc response)
50     throws IOException JavaDoc, ServletException JavaDoc {
51
52         ActionForward forward = mapping.getInputForward();
53         ActionMessages errors = new ActionMessages();
54         JahiaEngineCommonData engineCommonData = null;
55
56         try {
57             init(request);
58
59             engineCommonData = (JahiaEngineCommonData)
60                     request.getAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA);
61
62             // Prepare the Date event
63
String JavaDoc eventObj = (String JavaDoc)request.getParameter(DATE_EVENT_PARAM);
64             request.setAttribute(DATE_EVENT_PARAM,eventObj);
65
66             if ( eventObj != null ){
67                 DatePickerEvent ev = (DatePickerEvent)request.getSession()
68                                    .getAttribute(eventObj + "_dateEvent");
69                 if ( ev == null ){
70                     ev = new DatePickerEvent(this,null,null,
71                         eventObj,
72                         new DatePickerData());
73                 }
74                 ev.setEventTimeToNow();
75                 DatePicker.getInstance().wakeupListener("beforeDisplayCalendar",ev);
76                 Vector JavaDoc dateErrors = ev.getDatePickerData().getErrors();
77                 if ( dateErrors.size()>0 ){
78                     request.setAttribute("errors",dateErrors);
79                 }
80                 request.setAttribute("dateValue",DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM,
81                         engineCommonData.getParamBean().getLocale()).format(new Date JavaDoc(ev.getDatePickerData().getDate())));
82                 request.setAttribute("dateLongValue",
83                                      String.valueOf(ev.getDatePickerData().getDate()));
84             }
85         } catch ( Throwable JavaDoc t ){
86             t.printStackTrace();
87             errors.add(ActionMessages.GLOBAL_MESSAGE,
88                        new ActionMessage("displayCalendar error"));
89         }
90         return continueForward(mapping,request,errors,forward);
91     }
92
93     /**
94      * Save submitted date.
95      *
96      * @param mapping
97      * @param form
98      * @param request
99      * @param response
100      * @return
101      * @throws IOException
102      * @throws ServletException
103      */

104     public ActionForward save(ActionMapping mapping,
105                               ActionForm form,
106                               HttpServletRequest JavaDoc request,
107                               HttpServletResponse JavaDoc response)
108     throws IOException JavaDoc, ServletException JavaDoc {
109
110         ActionForward forward = mapping.getInputForward();
111         ActionMessages errors = new ActionMessages();
112         JahiaEngineCommonData engineCommonData = null;
113         try {
114             init(request);
115
116             engineCommonData = (JahiaEngineCommonData)
117                     request.getAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA);
118             String JavaDoc dateValue = (String JavaDoc)request.getParameter("datebox");
119             String JavaDoc dateLongValue = (String JavaDoc)request.getParameter("datelong");
120             request.setAttribute("dateValue",dateValue);
121             request.setAttribute("dateLongValue",dateLongValue);
122
123             // Prepare the Date event
124
String JavaDoc eventObj = (String JavaDoc)request.getParameter(DATE_EVENT_PARAM);
125             DatePickerEvent ev = null;
126             Vector JavaDoc dateErrors = new Vector JavaDoc();
127             if ( eventObj == null || dateLongValue == null ){
128                 errors.add(ActionMessages.GLOBAL_MESSAGE,
129                            new ActionMessage("eventObj or date value is null"));
130             } else {
131                 long dateLong = Long.parseLong(dateLongValue);
132                 /*
133                 Date choosedDate = new Date(dateLong);
134
135                 // append now hours
136                 Date nowDate = Calendar.getInstance().getTime();
137                 choosedDate.setHours(nowDate.getHours());
138                 choosedDate.setMinutes(nowDate.getMinutes());
139                 choosedDate.setSeconds(nowDate.getSeconds());
140                 */

141                 ev = new DatePickerEvent(this,null,null,eventObj,
142                         new DatePickerData(dateLong));
143                 DatePicker.getInstance().wakeupListener("saveDate",ev);
144                 request.setAttribute(DATE_EVENT_PARAM,eventObj);
145                 dateErrors = ev.getDatePickerData().getErrors();
146                 request.getSession().setAttribute(eventObj + "_dateEvent",ev);
147                 if ( dateErrors.size()==0 ){
148                     String JavaDoc method = request.getParameter(mapping.getParameter());
149                     if ( method.equals("save") ){
150                         request.setAttribute("engines.close.refresh-opener","yes");
151                         request.setAttribute("engines.close.opener-url-params","&reloaded=yes");
152                         forward = mapping.findForward("EnginesCloseAnyPopup");
153                     } else if ( method.equals("apply") ){
154                         Properties JavaDoc params = new Properties JavaDoc();
155                         params.put("method","displayCalendar");
156                         params.put(DATE_EVENT_PARAM,eventObj);
157                         String JavaDoc requestURL = engineCommonData.getParamBean()
158                                 .composeStrutsUrl((mapping.getPath()).toString(),params,null);
159                         request.setAttribute("engines.apply.new-url",requestURL);
160                         request.setAttribute("engines.apply.refresh-opener","yes");
161                         request.setAttribute("engines.apply.opener-url-params","&reloaded=yes");
162                         forward = mapping.findForward("EnginesApplyAnyPopup");
163                     }
164                 } else {
165                     forward = displayCalendar(mapping,form,request,response);
166                 }
167             }
168         } catch ( Throwable JavaDoc t ){
169             t.printStackTrace();
170             errors.add(ActionMessages.GLOBAL_MESSAGE,
171                        new ActionMessage("displayCalendar error"));
172         }
173         return continueForward(mapping,request,errors,forward);
174     }
175
176     /**
177      * Apply Date change.
178      *
179      * @param mapping
180      * @param form
181      * @param request
182      * @param response
183      * @return
184      * @throws IOException
185      * @throws ServletException
186      */

187     public ActionForward apply(ActionMapping mapping,
188                               ActionForm form,
189                               HttpServletRequest JavaDoc request,
190                               HttpServletResponse JavaDoc response)
191     throws IOException JavaDoc, ServletException JavaDoc {
192         return save(mapping,form,request,response);
193     }
194
195     /**
196      *
197      * @param request
198      * @return
199      */

200     private void init(HttpServletRequest JavaDoc request) throws JahiaException {
201
202         // engines helpers
203
JahiaEngineCommonData engineCommonData =
204                 new JahiaEngineCommonData(request);
205
206         engineCommonData.setEngineTitle(DatePickerAction.ENGINE_TITLE);
207
208         String JavaDoc pid = null;
209         String JavaDoc entryStateParam = null;
210         try {
211             request.setAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA,
212                                  engineCommonData);
213
214             // Prepare engine buttons helper
215
JahiaEngineButtonsHelper jahiaEngineButtonsHelper =
216                     new JahiaEngineButtonsHelper();
217             jahiaEngineButtonsHelper.addOkButton();
218             jahiaEngineButtonsHelper.addApplyButton();
219             jahiaEngineButtonsHelper.addCancelButton();
220
221             request.setAttribute(JahiaEngineButtonsHelper.JAHIA_ENGINE_BUTTONS_HELPER,
222                                  jahiaEngineButtonsHelper);
223
224             // Engine Url
225
Properties JavaDoc params = new Properties JavaDoc();
226             String JavaDoc engineURL = engineCommonData.getParamBean()
227                                  .composeStrutsUrl("DatePicker",params,null);
228             engineCommonData.setEngineURL(engineURL);
229
230         } catch ( Throwable JavaDoc t ){
231             t.printStackTrace();
232             throw new JahiaException("Exception occured initializing engine's objects",
233                                      "Exception occured initializing engine's objects",
234                                      JahiaException.ENGINE_ERROR,
235                                      JahiaException.ENGINE_ERROR);
236         }
237     }
238
239     /**
240      * Forward to errors if any or to continueForward
241      *
242      * @param mapping
243      * @param request
244      * @param errors
245      * @param continueForward
246      * @return
247      */

248     public ActionForward continueForward(ActionMapping mapping,
249             HttpServletRequest JavaDoc request, ActionMessages errors,
250             ActionForward continueForward){
251
252         if(errors != null && !errors.isEmpty()){
253             saveErrors(request,errors);
254             return mapping.findForward("error");
255         }
256         return continueForward;
257     }
258
259 }
260
Popular Tags