1 package ch.ige.edossier.web.server;
2
3 import java.io.File;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.sql.SQLException;
7 import java.text.SimpleDateFormat;
8 import java.util.*;
9 import java.util.Date;
10 import ch.ige.edossier.util.MailSender;
11 import ch.ige.edossier.util.ServerProperties;
12 import ch.ige.edossier.web.vo.MailSenderVO;
13 import ch.ige.edossier.web.vo.NewsletterVO;
14
15
26 public class Newsletter
27 {
28 private Properties webproperties = null;
29 private StringBuffer logBuf = new StringBuffer();
30 private SimpleDateFormat sf = ( SimpleDateFormat )SimpleDateFormat.getDateInstance();
31
32
36 public Newsletter() throws Exception
37 {
38 sf.applyPattern( "yyyy-MM-dd" ); setLogStart();
40
41 run();
42
43 setLogEnd();
44
45 String filepath = ServerProperties.loadServerProperties().getProperty( "newsletter" );
47 writeFile( filepath, logBuf.toString(), "edossier" );
48 }
49
50
53 private void setLogStart()
54 {
55 logBuf.append( "---------------------------------------------------------------------------------------\n" );
56 logBuf.append( " Die Newsletter-Batch-Applikation wurde gestartet: " );
57 logBuf.append( sf.format( new Date( System.currentTimeMillis() ) ) );
58 logBuf.append( "\n---------------------------------------------------------------------------------------\n" );
59 }
60
61
64 private void setLogEnd()
65 {
66 logBuf.append( "\n\n---------------------------------------------------------------------------------------\n" );
67 logBuf.append( " Verarbeitung des Newsletter-Batch wurde beendet." );
68 logBuf.append( "\n---------------------------------------------------------------------------------------\n" );
69 }
70
71
74 public void run()
75 {
76 try
77 {
78 SimpleDateFormat sf = ( SimpleDateFormat )SimpleDateFormat.getDateInstance();
79 sf.applyPattern( "yyyy-MM-dd" );
80 Collection newsList = new EDossierControl().getNewInterceptions( sf.format( new Date( System.currentTimeMillis() ) ) );
81
82 if( newsList != null )
83 {
84 Iterator iter = newsList.iterator();
85
86 while( iter.hasNext() )
87 {
88 NewsletterVO newsletterVO = ( NewsletterVO )iter.next();
89 webproperties = ServerProperties.loadWebProperties( newsletterVO.getLanguageCd() );
90 MailSender.sendMail( fillMailVO( newsletterVO ), true );
91
92 logBuf.append( "\n- Newsletter wurde gesendet an: " );
93 logBuf.append( newsletterVO.getEmail() );
94 }
95 }
96 }
97 catch( SQLException sqlex )
98 {
99 sqlex.printStackTrace();
100 logBuf.append( "\nSQL-Fehler beim laden der Newsletter-Empfängerdaten:\n" + sqlex.getMessage() );
101 }
102 catch( Exception ex )
103 {
104 ex.printStackTrace();
105 logBuf.append( "\nFehler beim Senden des Newsletters:\n" + ex.getMessage() );
106 }
107 }
108
109
114 private MailSenderVO fillMailVO( NewsletterVO newsletterVO )
115 {
116 MailSenderVO mailSenderVO = new MailSenderVO();
117 mailSenderVO.setAdressTo( newsletterVO.getEmail() );
118 mailSenderVO.setAdressFrom( "edossier-Newsletter" );
119 mailSenderVO.setSubject( webproperties.getProperty( "mail.newsletter.subject" ) );
120
121 StringBuffer buf = new StringBuffer();
122 buf.append( webproperties.getProperty( "mail.body.auto" ) ); buf.append( webproperties.getProperty( "mail.newsletter.body.start" ) );
124 buf.append( newsletterVO.getDetailMsg() );
125 buf.append( webproperties.getProperty( "mail.body.end" ) );
127 mailSenderVO.setBody( buf.toString() );
128 return mailSenderVO;
129 }
130
131
137 private void writeFile( String filepath, String message, String appname )
138 {
139 try
140 {
141 File statFile = new File( filepath );
142 if( !statFile.isDirectory() )
143 {
144 statFile.mkdirs();
145 }
146 FileOutputStream fos = new FileOutputStream( statFile + "//" + appname + "_newsletter.txt" );
147 fos.write( message.getBytes() );
148 fos.flush();
149 fos.close();
150 }
151 catch( IOException ioex )
152 {
153 System.err.println( "Log-Datei für edossier-newsletter konnte nicht erstellt werden: " + ioex.getMessage() );
154 }
155 }
156
157
161 public static void main( String[] args )
162 {
163 try
164 {
165 new Newsletter();
166 }
167 catch( Exception ex )
168 {
169 ex.printStackTrace();
170 System.err.println( "Fehler in der Verarbeitung des Newsletter: " + ex.getMessage() );
171 System.exit( 1 );
172 }
173 }
174 }
175