KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > servlet > SimpleFormToMailServlet


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10
11 package org.mmbase.servlet;
12
13 import java.io.*;
14 import javax.servlet.*;
15 import javax.servlet.http.*;
16 import java.util.*;
17
18 import org.mmbase.util.*;
19 import org.mmbase.module.*;
20 import org.mmbase.util.logging.*;
21
22 /**
23  * Post Servlet a example of how to use different Post methods.
24  *
25  * This servlet will mail a form to a (set of) specified user(s).
26  * Inherit from it (its abstract), specify the methods:
27  * public abstract String getSubject();
28  * public abstract String getToEmailAddress();
29  * and the form will be mailed.
30  *
31  * @javadoc
32  * @application SCAN (depends from JamesServlet). Also depends on Email.
33  * @deprecated Abstract and not used anywhere.
34  * @author marmaa@vpro.nl (Marcel Maatkamp)
35  * @version $Id: SimpleFormToMailServlet.java,v 1.11 2004/10/01 08:41:48 pierre Exp $
36  */

37 public abstract class SimpleFormToMailServlet extends JamesServlet {
38     static Logger log = Logging.getLoggerInstance(performance.class.getName());
39
40     protected SendMailInterface sendmail;
41     boolean first=true;
42
43     String JavaDoc entries[] = null;
44
45     public void init() {
46         sendmail=(SendMailInterface)Module.getModule("sendmail");
47         if( sendmail == null ) {
48             log.error("SimpleFormToMailServlet - init(): sendmail is null!!!");
49         } else {
50             log.debug("SimpleFormToMailServlet - init(): successfully initialized.");
51         }
52     }
53
54     /**
55      * reload
56      */

57     public void reload() {
58         sendmail=(SendMailInterface)Module.getModule("sendmail");
59         if( sendmail == null ) {
60             log.error("SimpleFormToMailServlet - reload(): sendmail is null!!!");
61         } else {
62             log.debug("SimpleFormToMailServlet - reload(): successfully reloaded.");
63         }
64     }
65
66     /**
67      * service call will be called by the server when a request is done
68      * by a user.
69      */

70     public synchronized void service(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException {
71
72         String JavaDoc from = null;
73         String JavaDoc to = null;
74         String JavaDoc subject = null;
75         String JavaDoc text = null;
76
77         HttpPost hp = new HttpPost( req );
78         from = hp.getPostParameter("email");
79         to = getToEmailAddress();
80         subject = getSubject();
81         text = getentries( hp );
82
83         if ( !sendmail( from, to, subject, text) ) {
84             log.error("SimpleFormToMailServlet - service(): ERROR: mail from("+from+"), to("+to+"), subject("+subject+"), text("+text+"): not mailed!");
85             displayErrorMail(res);
86         } else {
87             log.debug("SimpleFormToMailServlet - service(): mail from("+from+"), to("+to+"), subject("+subject+"), text("+text+"): mailed!");
88             displaySuccess(res);
89         }
90     }
91
92     /**
93      * @rename getEntries
94      */

95     protected String JavaDoc getentries( HttpPost post ) {
96         String JavaDoc result = "";
97         Hashtable postparams = post.getPostParameters();
98         Enumeration e = postparams.keys();
99         String JavaDoc key, value;
100         while( e.hasMoreElements() ) {
101             key = (String JavaDoc) e.nextElement();
102
103             Vector v = post.getPostMultiParameter( key );
104             Enumeration e2 = v.elements();
105
106             if( e2.hasMoreElements() ) {
107                 value = "";
108                 while( e2.hasMoreElements() ) {
109                     value += (String JavaDoc)e2.nextElement();
110                     if( e2.hasMoreElements() )
111                         value += ",";
112                 }
113             } else
114                 value = "unknown";
115
116             result += key +":\t\t" + value + "\n";
117         }
118         return result;
119     }
120
121     public abstract String JavaDoc getSubject();
122
123     public abstract String JavaDoc getToEmailAddress();
124
125     /**
126      * Produces a 'standard' header of html-form.
127      * Override when in need for different layout.
128      */

129     public String JavaDoc getHtmlHeader( String JavaDoc title ) {
130         StringBuffer JavaDoc b = new StringBuffer JavaDoc();
131
132         b.append( "<HTML>\n" );
133         b.append( "<HEAD>\n" );
134         b.append( " <TITLE>"+title+"</TITLE>\n" );
135         b.append( "</HEAD>\n" );
136         b.append( "<BODY BGCOLOR=\"#000000\">\n" );
137         b.append( "\n" );
138         b.append( "<P><CENTER><TABLE BORDER=0 WIDTH=500 HEIGHT=\"95%\">\n" );
139         b.append( " <TR>\n" );
140         b.append( " <TD bgcolor=\"#FFFFFF\">\n" );
141         b.append( " <P><CENTER><B><FONT SIZE=\"+1\" FACE=\"Arial\">" );
142
143         return b.toString();
144     }
145
146     public String JavaDoc getHtmlFooter() {
147         StringBuffer JavaDoc b = new StringBuffer JavaDoc();
148         b.append( " </FONT></B></CENTER></P>\n" );
149         b.append( " </TD></TR>\n" );
150         b.append( "</TABLE></CENTER></P>\n" );
151         b.append( "</BODY>\n" );
152         b.append( "</HTML>\n" );
153         return b.toString();
154     }
155
156     /**
157      * write this semi-html page to user's browserwindow, displaying status.
158      */

159     private void displayResult( HttpServletResponse res, String JavaDoc title, String JavaDoc message ) {
160         try {
161             String JavaDoc result = "";
162             PrintStream out = new PrintStream(res.getOutputStream());
163             // Set the content type of this request
164
try {
165                 res.setContentType("text/html");
166                 //res.writeHeaders();
167
res.flushBuffer();
168             } catch (IOException e) { e.printStackTrace(); }
169             result += getHtmlHeader( title );
170             result += message;
171             result += getHtmlFooter();
172             out.println( result );
173         } catch( Exception JavaDoc e ) {
174             log.debug("displayResults(): ERROR: " + e );
175         }
176     }
177
178     private void displaySuccess( HttpServletResponse res ) {
179         String JavaDoc titel = "Formulier is verstuurd";
180         String JavaDoc body = "Uw formulier is verstuurd.<BR>\n";
181         displayResult(res, titel, body);
182     }
183
184     private void displayErrorUsername ( HttpServletResponse res ) {
185         String JavaDoc titel = "Uw naam is niet ingevuld";
186         String JavaDoc body = "Uw naam is niet ingevuld in uw formulier. <BR>\n";
187                body += "<STRONG>Uw formulier is daarom NIET opgestuurt</STRONG>";
188         displayResult(res, titel, body);
189     }
190
191     private void displayErrorEntry ( HttpServletResponse res ) {
192         String JavaDoc titel = "Entry niet gevonden in dokument";
193         String JavaDoc body = "Het systeem heeft een fout gedetecteerd tijdens het verwerken van uw formulier.<BR>\n";
194                body += "<STRONG>Uw formulier is daarom NIET opgestuurt</STRONG>";
195         displayResult(res, titel, body);
196     }
197
198     private void displayErrorMail ( HttpServletResponse res ) {
199         String JavaDoc titel = "Fout tijdens versturen email";
200         String JavaDoc body = "Er is een fout opgetreden tijdens het versturen van uw formulier.<BR>\n";
201                body += "Er is melding van gemaakt aan de beheerder, maar u kunt het later nog eens opnieuw opsturen voor de zekerheid.";
202         displayResult(res, titel, body);
203     }
204
205
206     /**
207      * Send mail
208      *
209      * @returns true when send, false otherwise
210      */

211     private boolean sendmail( String JavaDoc from, String JavaDoc to, String JavaDoc subject, String JavaDoc text ) {
212         log.debug("SimpleFormToMailServlet - sendmail(): from("+from+"), to("+to+"), subject("+subject+"), text("+text+")");
213
214         boolean result = false;
215         Mail mail = new Mail(to, from);
216         mail.setTo( to );
217         mail.setFrom( from );
218         mail.setSubject( subject );
219         mail.setDate();
220         mail.setReplyTo(from );
221         mail.setText(text);
222         result = sendmail.sendMail(mail);
223         return result;
224     }
225
226
227     /**
228      * Info method, provides the user/server with some basic info on
229      * this Servlet
230      */

231     public String JavaDoc getServletInfo() {
232         return ("SimpleFormToMailServlet - Marcel Maatkamp");
233     }
234 }
235
Popular Tags