001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/portal/owswatch/EmailSender.java $
002 /*----------------------------------------------------------------------------
003 This file is part of deegree, http://deegree.org/
004 Copyright (C) 2001-2009 by:
005 Department of Geography, University of Bonn
006 and
007 lat/lon GmbH
008
009 This library is free software; you can redistribute it and/or modify it under
010 the terms of the GNU Lesser General Public License as published by the Free
011 Software Foundation; either version 2.1 of the License, or (at your option)
012 any later version.
013 This library is distributed in the hope that it will be useful, but WITHOUT
014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
016 details.
017 You should have received a copy of the GNU Lesser General Public License
018 along with this library; if not, write to the Free Software Foundation, Inc.,
019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020
021 Contact information:
022
023 lat/lon GmbH
024 Aennchenstr. 19, 53177 Bonn
025 Germany
026 http://lat-lon.de/
027
028 Department of Geography, University of Bonn
029 Prof. Dr. Klaus Greve
030 Postfach 1147, 53001 Bonn
031 Germany
032 http://www.geographie.uni-bonn.de/deegree/
033
034 e-mail: info@deegree.org
035 ----------------------------------------------------------------------------*/
036
037 package org.deegree.portal.owswatch;
038
039 import java.io.Serializable;
040 import java.util.Iterator;
041 import java.util.List;
042
043 import org.deegree.framework.log.ILogger;
044 import org.deegree.framework.log.LoggerFactory;
045 import org.deegree.framework.mail.EMailMessage;
046 import org.deegree.framework.mail.MailHelper;
047 import org.deegree.framework.mail.MailMessage;
048 import org.deegree.framework.mail.UnknownMimeTypeException;
049
050 /**
051 * This class responsible for sending emails to the registered users in case of faulty tests to the services
052 *
053 * @author <a href="mailto:elmasry@lat-lon.de">Moataz Elmasry</a>
054 * @author last edited by: $Author: jmays $
055 *
056 * @version $Revision: 20271 $, $Date: 2009-10-21 13:07:15 +0200 (Mi, 21 Okt 2009) $
057 */
058 public class EmailSender implements Serializable {
059
060 /**
061 *
062 */
063 private static final long serialVersionUID = -6179048752410881409L;
064
065 private static final ILogger LOG = LoggerFactory.getLogger( EmailSender.class );
066
067 private String mailFrom = null;
068
069 private String mailServer = null;
070
071 private List<String> receivers = null;
072
073 /**
074 * @param mailFrom
075 * @param mailServer
076 * @param receivers
077 */
078 public EmailSender( String mailFrom, String mailServer, List<String> receivers ) {
079
080 this.mailFrom = mailFrom;
081 this.mailServer = mailServer;
082 this.receivers = receivers;
083 }
084
085 protected String createEmailBody( ServiceConfiguration serviceConfiguration, ValidatorResponse response,
086 String protocolHttpaddress ) {
087
088 // create body (allways the same):
089 StringBuffer body = new StringBuffer( 500 );
090 String protHref = Messages.getMessage( "SendMail.protocolAddress", protocolHttpaddress, protocolHttpaddress );
091 body.append( Messages.getString( "SendMail.header" ) );
092 body.append( Messages.getString( "SendMail.addressee" ) );
093 body.append( Messages.getMessage( "SendMail.messageBody", serviceConfiguration.getServiceName() ) );
094 body.append( Messages.getMessage( "SendMail.errorLog", serviceConfiguration.getOnlineResource(),
095 serviceConfiguration.getServiceVersion(),
096 serviceConfiguration.getRequestType(), response.getLastTest().toString(),
097 response.getMessage(), protHref ) );
098 body.append( Messages.getMessage( "SendMail.closingWords" ) );
099 body.append( Messages.getString( "SendMail.signer" ) );
100 body.append( Messages.getString( "SendMail.footer" ) );
101 return body.toString();
102 }
103
104 /**
105 * this method creates a mail from text fragments in the messages_en.properties and sends it to the owsWatch admin
106 * as defined in the WEB-INF/conf/owswatch/config.xml file.
107 *
108 * If sending the mail fails, an error messages is returned, else a success message is returned.
109 *
110 * @param serviceConfiguration
111 * @param response
112 * @param protocolHttpaddress
113 *
114 */
115 public void createAndSendMail( ServiceConfiguration serviceConfiguration, ValidatorResponse response,
116 String protocolHttpaddress ) {
117
118 String body = createEmailBody( serviceConfiguration, response, protocolHttpaddress );
119 String error = "";
120 String subject = Messages.getString( "SendMail.subject" );
121
122 Iterator<String> it = receivers.iterator();
123 while ( it.hasNext() ) {
124 // send message to the user
125 EMailMessage mm = new EMailMessage( mailFrom, it.next(), subject, body.toString() );
126 try {
127 mm.setMimeType( MailMessage.PLAIN_TEXT );
128 } catch ( UnknownMimeTypeException e ) {
129 String errorMsg = "ERROR_UNDEFINED_TYPE";
130 LOG.logError( errorMsg );
131 continue;
132 }
133
134 try {
135 MailHelper.createAndSendMail( mm, mailServer );
136 } catch ( Exception e ) {
137 error = Messages.arrayToString( new String[] {
138 e.getLocalizedMessage(),
139 Messages.getMessage( "ERROR_SEND_MAIL", receivers,
140 mailFrom, mailServer ),
141 response.getMessage() }, "\n" );
142 LOG.logError( error );
143 }
144 }
145 }
146 }