package com.ngMAT.appl.bbs.servlets; import java.sql.SQLException; import com.ngMAT.HTML.HTMLComponent; import com.ngMAT.HTML.HTMLTemplate; import com.ngMAT.appl.GenericRuntimeException; import com.ngMAT.appl.genericservlet.GenericServlet; import com.ngMAT.appl.genericservlet.GenericServletContext; import com.ngMAT.appl.bbs.data.session.BBSEntrySessionData; import com.ngMAT.appl.bbs.data.table.TBbsMessage; import com.ngMAT.appl.data.handler.IDAssigner; /** * @author tsuhtan * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class MessageEntryServlet extends GenericServlet { /* いつでもおっけ。 * @see com.ngMAT.appl.genericservlet.GenericServlet#isReadyToGo(GenericServletContext) */ public boolean isReadyToGo(GenericServletContext context) { return true; } /* "do_process=true" : エントリ受付、"do_complete=true" : 確定。 * @see com.ngMAT.appl.genericservlet.GenericServlet#process(GenericServletContext) */ public HTMLComponent process(GenericServletContext context) { HTMLTemplate template = null; if (context.getParameter ("do_process") != null) template = processEntry (context); else if (context.getParameter ("do_complete") != null) template = processComplete (context); else template = processInitialDisplay (context); return template; } private HTMLTemplate processInitialDisplay (GenericServletContext context) { MessageEntryServletConfig config = (MessageEntryServletConfig)context.getConfig(); HTMLTemplate template = context.getTemplate (config.entry_template_name); long ref_message_id = context.getLongParameter ("ref_message_id", 0); if (ref_message_id != TBbsMessage.ID_NOT_ASSIGNED) { TBbsMessage ref_message = TBbsMessage.select (context, ref_message_id); if (ref_message != null) { template.setTagValue ("ref_message_id", ref_message_id); String subject = ref_message.subject; if (! subject.startsWith (config.RE_STRING)) subject = config.RE_STRING + " " + subject; template.setTagValue ("subject", subject); } } return template; } private HTMLTemplate processEntry (GenericServletContext context) { MessageEntryServletConfig config = (MessageEntryServletConfig)context.getConfig(); HTMLTemplate template = context.getTemplate (config.entry_template_name); if (isValidEntry (context, template)) template = getConfirmationTemplate (context); else context.setTagValueWithParameters (template); return template; } private boolean isValidEntry (GenericServletContext context, HTMLTemplate template) { if (isEmpty (context, template, "description", "メッセージ")) return false; return true; } private boolean isEmpty (GenericServletContext context, HTMLTemplate template, String p_name, String p_display_name) { String s = context.getParameter (p_name); if (s == null || s.trim().length() == 0) { template.setTagValue ("ERROR_MESSAGE", p_display_name + "が入力されていません。"); return true; } return false; } private HTMLTemplate getConfirmationTemplate (GenericServletContext context) { MessageEntryServletConfig config = (MessageEntryServletConfig)context.getConfig(); HTMLTemplate template = context.getTemplate (config.confirm_template_name); BBSEntrySessionData sd = new BBSEntrySessionData(); sd.initialize (context); sd.bind (context); template.setTagValue ("contributer_name", sd.message.contributer_name); template.setTagValue ("contributer_email", sd.message.contributer_email); template.setTagValue ("subject", sd.message.subject); template.setTagValue ("description", sd.message.description); template.setTagValue ("sid", sd.id); return template; } private HTMLTemplate processComplete (GenericServletContext context) { MessageEntryServletConfig config = (MessageEntryServletConfig)context.getConfig(); BBSEntrySessionData sd = BBSEntrySessionData.get (context, context.getParameter ("sid")); TBbsMessage data = sd.message; IDAssigner assigner = IDAssigner.getInstance (context); data.bbs_message_id = assigner.assignID (context, "t_bbs_message", "bbs_message_id"); data.reg_timestamp = new java.sql.Timestamp (System.currentTimeMillis()); try { context.commit(); } catch (SQLException e) { throw new GenericRuntimeException (e); } data.insert (context); try { context.commit(); } catch (SQLException e) { throw new GenericRuntimeException (e); } HTMLTemplate template = context.getTemplate (config.completed_template_name); return template; } }