001: package org.contineo.web.communication;
002:
003: import org.apache.commons.logging.Log;
004: import org.apache.commons.logging.LogFactory;
005:
006: import org.contineo.core.communication.SystemMessage;
007: import org.contineo.core.communication.dao.SystemMessageDAO;
008:
009: import org.contineo.util.Context;
010:
011: import org.contineo.web.SessionManagement;
012: import org.contineo.web.StyleBean;
013: import org.contineo.web.i18n.Messages;
014: import org.contineo.web.navigation.NavigationBean;
015: import org.contineo.web.navigation.PageContentBean;
016:
017: import java.util.ArrayList;
018: import java.util.Collection;
019: import java.util.Date;
020: import java.util.List;
021: import java.util.Map;
022:
023: import javax.faces.application.Application;
024: import javax.faces.context.FacesContext;
025:
026: /**
027: * <p>
028: * The <code>MessagesRecordsManager</code> class is responsible for
029: * constructing the list of <code>SystemMessage</code> beans which will be
030: * bound to a ice:dataTable JSF component.
031: * </p>
032: * <p>
033: * Large data sets could be handle by adding a ice:dataPaginator. Alternatively
034: * the dataTable could also be hidden and the dataTable could be added to
035: * scrollable ice:panelGroup.
036: * </p>
037: *
038: * @author Marco Meschieri
039: * @version $Id: DocumentsRecordsManager.java,v 1.1 2007/06/29 06:28:29 marco
040: * Exp $
041: * @since 3.0
042: */
043: public class MessagesRecordsManager {
044: protected static Log log = LogFactory
045: .getLog(MessagesRecordsManager.class);
046: private List<SystemMessage> messages = new ArrayList<SystemMessage>();
047: private PageContentBean selectedPanel = new PageContentBean("list");
048: private NavigationBean navigation;
049: private MessageForm form;
050:
051: public MessagesRecordsManager() {
052: messages.clear();
053: }
054:
055: public PageContentBean getSelectedPanel() {
056: return selectedPanel;
057: }
058:
059: public void setSelectedPanel(PageContentBean panel) {
060: this .selectedPanel = panel;
061: }
062:
063: /**
064: * Reloads the messages list
065: */
066: public String listMessages() {
067: SystemMessageDAO smdao = (SystemMessageDAO) Context
068: .getInstance().getBean(SystemMessageDAO.class);
069: messages = smdao.findByRecipient(SessionManagement
070: .getUsername());
071: smdao.deleteExpiredMessages(SessionManagement.getUsername());
072:
073: PageContentBean content = new PageContentBean("messages",
074: "communication/messages");
075: content.setContentTitle(Messages.getMessage("db.readmessages"));
076: content.setIcon(StyleBean.getImagePath("message.gif"));
077: navigation.setSelectedPanel(content);
078:
079: setSelectedPanel(new PageContentBean("list"));
080:
081: return null;
082: }
083:
084: /**
085: * Shows the message insert form
086: */
087: public String addMessage() {
088: Application application = FacesContext.getCurrentInstance()
089: .getApplication();
090: NavigationBean navigation = ((NavigationBean) application
091: .createValueBinding("#{navigation}").getValue(
092: FacesContext.getCurrentInstance()));
093:
094: PageContentBean content = new PageContentBean("message",
095: "communication/messages");
096: content
097: .setContentTitle(Messages
098: .getMessage("db.createmessage"));
099: content.setIcon(StyleBean.getImagePath("message.gif"));
100: navigation.setSelectedPanel(content);
101:
102: // Initialize the form
103: form.setReadOnly(false);
104: form.setMessage(new SystemMessage());
105:
106: setSelectedPanel(new PageContentBean("insert"));
107:
108: return null;
109: }
110:
111: /**
112: * Cleans up the resources used by this class. This method could be called
113: * when a session destroyed event is called.
114: */
115: public void dispose() {
116: messages.clear();
117: }
118:
119: /**
120: * Gets the list of SystemMessages which will be used by the ice:dataTable
121: * component.
122: */
123: public Collection<SystemMessage> getMessages() {
124: if (messages.size() == 0) {
125: listMessages();
126: }
127:
128: return messages;
129: }
130:
131: public String selectMessage() {
132: Map map = FacesContext.getCurrentInstance()
133: .getExternalContext().getRequestMap();
134: SystemMessage record = (SystemMessage) map.get("messageRecord");
135: SystemMessageDAO smdao = (SystemMessageDAO) Context
136: .getInstance().getBean(SystemMessageDAO.class);
137:
138: if (record.getRead() == 0) {
139: record.setRead(1);
140: smdao.store(record);
141:
142: if (record.getConfirmation() == 1) {
143: Date date = new Date();
144: SystemMessage sysmess = new SystemMessage();
145: sysmess.setAuthor("SYSTEM");
146: sysmess.setRecipient(record.getAuthor());
147: sysmess.setSubject("Confirmation");
148: sysmess.setMessageText("To: " + record.getRecipient()
149: + "\nMessage: " + record.getMessageText());
150: sysmess.setSentDate(String.valueOf(date.getTime()));
151: sysmess.setRead(0);
152: sysmess.setConfirmation(0);
153: sysmess.setPrio(record.getPrio());
154: sysmess.setDateScope(record.getDateScope());
155: smdao.store(sysmess);
156: }
157: }
158:
159: // Initialize the form
160: Application application = FacesContext.getCurrentInstance()
161: .getApplication();
162: MessageForm form = ((MessageForm) application
163: .createValueBinding("#{messageForm}").getValue(
164: FacesContext.getCurrentInstance()));
165: form.setReadOnly(true);
166: form.setMessage(record);
167:
168: selectedPanel = new PageContentBean("view");
169:
170: return null;
171: }
172:
173: public String deleteMessage() {
174: Map map = FacesContext.getCurrentInstance()
175: .getExternalContext().getRequestMap();
176: SystemMessage record = (SystemMessage) map.get("messageRecord");
177:
178: if (SessionManagement.isValid()) {
179: try {
180: SystemMessageDAO smDao = (SystemMessageDAO) Context
181: .getInstance().getBean(SystemMessageDAO.class);
182: boolean deleted = smDao.delete(record.getMessageId());
183:
184: if (!deleted) {
185: Messages
186: .addLocalizedError("errors.action.deletesysmess");
187: } else {
188: Messages
189: .addLocalizedInfo("msg.action.deletesysmess");
190: }
191: } catch (Exception e) {
192: log.error(e.getMessage(), e);
193: Messages
194: .addLocalizedError("errors.action.deletesysmess");
195: }
196: } else {
197: return "login";
198: }
199:
200: listMessages();
201:
202: return null;
203: }
204:
205: public int getToBeReadCount() {
206: SystemMessageDAO smdao = (SystemMessageDAO) Context
207: .getInstance().getBean(SystemMessageDAO.class);
208: int smcount = smdao.getCount(SessionManagement.getUsername());
209:
210: return smcount;
211: }
212:
213: public int getCount() {
214: if (messages.size() == 0) {
215: listMessages();
216: }
217:
218: return messages.size();
219: }
220:
221: public void setNavigation(NavigationBean navigation) {
222: this .navigation = navigation;
223: }
224:
225: public void setForm(MessageForm form) {
226: this.form = form;
227: }
228: }
|