1
2
3
4 package org.marketchangers.prayer.portlet;
5
6 import java.io.IOException;
7 import java.util.Date;
8 import java.util.Hashtable;
9 import java.util.Iterator;
10 import java.util.List;
11 import java.util.Map;
12
13 import javax.portlet.ActionRequest;
14 import javax.portlet.ActionResponse;
15 import javax.portlet.Portlet;
16 import javax.portlet.PortletConfig;
17 import javax.portlet.PortletContext;
18 import javax.portlet.PortletException;
19 import javax.portlet.PortletRequestDispatcher;
20 import javax.portlet.RenderRequest;
21 import javax.portlet.RenderResponse;
22
23 import org.marketchangers.ServiceLocator;
24 import org.marketchangers.prayer.DateUtil;
25 import org.marketchangers.prayer.PrayerCategory;
26 import org.marketchangers.prayer.PrayerRequest;
27 import org.marketchangers.prayer.PrayerRequestManager;
28 ;
29
30 /***
31 * @author jniu
32 * @author jwilliams
33 */
34 public class SubmitRequestPortlet implements Portlet {
35 private PortletContext context;
36
37 public void init(PortletConfig config) throws PortletException {
38 this.context = config.getPortletContext();
39 }
40
41 public void processAction(ActionRequest request, ActionResponse response)
42 throws PortletException, IOException {
43
44 PrayerRequestManager manager = getPrayerRequestManager();
45
46 String startdate = request.getParameter("startdate");
47 String enddate = request.getParameter("enddate");
48 String category = request.getParameter("category");
49 String newcategory = request.getParameter("newcategory");
50 String background = request.getParameter("background");
51 String content = request.getParameter("content");
52 String subject = request.getParameter("subject");
53 String remoteUser = request.getRemoteUser();
54
55 PrayerRequest prayerRequest = new PrayerRequest();
56 prayerRequest.setRequestorUserId(remoteUser);
57
58 Map messages = new Hashtable();
59 request.setAttribute("messages", messages);
60
61 if (startdate != null) {
62
63 Date startDate = DateUtil.validateDateField(startdate);
64 if (startDate == null) {
65 messages.put("success", "false");
66 messages.put("DateFormat", "false");
67 response.setRenderParameters(request.getParameterMap());
68 return;
69 }
70 prayerRequest.setStartDate(startDate);
71 }
72
73 if (enddate != null) {
74
75 Date endDate = DateUtil.validateDateField(enddate);
76 if (endDate == null) {
77 messages.put("success", "false");
78 messages.put("DateFormat", "false");
79 response.setRenderParameters(request.getParameterMap());
80 return;
81 }
82 prayerRequest.setEndDate(endDate);
83 }
84
85 PrayerCategory prayerCategory =
86 getCategory(category, newcategory, remoteUser, manager);
87 prayerRequest.setCategory(prayerCategory);
88
89 if (background != null) {
90 prayerRequest.setBackground(background);
91 }
92
93 if ((subject != null) && (subject.length() > 0)) {
94 prayerRequest.setSubject(subject);
95 } else {
96 messages.put("success", "false");
97 messages.put("subjectValid", "false");
98 response.setRenderParameters(request.getParameterMap());
99 return;
100 }
101
102 if ((content != null) && (content.length() > 0)) {
103 prayerRequest.setContent(content);
104 } else {
105 messages.put("success", "false");
106 messages.put("detailsValid", "false");
107 response.setRenderParameters(request.getParameterMap());
108 return;
109 }
110
111 prayerRequest.setStatus(PrayerRequest.OPEN);
112
113 manager.submitPrayerRequest(prayerRequest);
114 messages.put("success", "true");
115 }
116
117 public void render(RenderRequest request, RenderResponse response)
118 throws PortletException, IOException {
119
120 request.setAttribute(
121 "categories",
122 getCategoriesForRequestor(request.getRemoteUser()));
123
124
125
126 Map messages = (Map) request.getAttribute("messages");
127 if (messages != null) {
128 Iterator iMessages = messages.keySet().iterator();
129 while (iMessages.hasNext()) {
130 String sKey = (String) iMessages.next();
131 String sValue = (String) messages.get(sKey);
132 request.setAttribute(sKey, sValue);
133 }
134 messages.clear();
135 }
136
137
138 getRequestDispatcher("/submitrequest.jsp").include(request, response);
139 }
140
141 public void destroy() {
142 }
143
144
145 private List getCategoriesForRequestor(String user) {
146 return getPrayerRequestManager().getCategoriesForRequestor(user);
147 }
148
149 private PrayerCategory getCategory(
150 String category,
151 String newcategory,
152 String remoteUser,
153 PrayerRequestManager manager) {
154
155 PrayerCategory prayerCategory = null;
156
157 if (category != null) {
158 if (!category.toLowerCase().startsWith("select a category")
159 && (!category.toLowerCase().startsWith("add a new category"))) {
160
161 prayerCategory = manager.getPrayerCategory(category);
162 } else {
163
164 if (newcategory != null) {
165 prayerCategory = new PrayerCategory();
166 prayerCategory.setName(newcategory);
167 prayerCategory.setRequestorUserId(remoteUser);
168 manager.createPrayerCategory(prayerCategory);
169 }
170 }
171 }
172
173 return prayerCategory;
174 }
175
176 private PrayerRequestManager getPrayerRequestManager() {
177 return (PrayerRequestManager) getServiceLocator().get(
178 PrayerRequestManager.class);
179 }
180
181 private PortletRequestDispatcher getRequestDispatcher(String path) {
182 return context.getRequestDispatcher(path);
183 }
184
185 private ServiceLocator getServiceLocator() {
186 return (ServiceLocator) context.getAttribute(ServiceLocator.KEY);
187 }
188 }