KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > threads > DeliverCampaignThread


1 package com.dotmarketing.threads;
2
3 import java.util.Date JavaDoc;
4 import java.util.List JavaDoc;
5
6 import com.dotmarketing.beans.UserProxy;
7 import com.dotmarketing.cms.factories.PublicAddressFactory;
8 import com.dotmarketing.cms.factories.PublicCompanyFactory;
9 import com.dotmarketing.db.DotConnect;
10 import com.dotmarketing.db.DotHibernate;
11 import com.dotmarketing.factories.InodeFactory;
12 import com.dotmarketing.factories.UserProxyFactory;
13 import com.dotmarketing.portlets.campaigns.model.Campaign;
14 import com.dotmarketing.portlets.campaigns.model.Recipient;
15 import com.dotmarketing.portlets.communications.model.Communication;
16 import com.dotmarketing.portlets.user.factories.UserCommentsFactory;
17 import com.dotmarketing.portlets.user.model.UserComment;
18 import com.dotmarketing.util.Config;
19 import com.dotmarketing.util.Logger;
20 import com.dotmarketing.util.Mailer;
21 import com.dotmarketing.util.UtilMethods;
22 import com.liferay.portal.language.LanguageException;
23 import com.liferay.portal.language.LanguageUtil;
24 import com.liferay.portal.model.Address;
25 import com.liferay.portal.model.Company;
26 import com.liferay.portal.model.User;
27
28 public class DeliverCampaignThread extends Thread JavaDoc {
29
30     private Campaign campaign;
31     private User subscriber;
32     private Recipient recipient;
33     private StringBuffer JavaDoc message;
34     private List JavaDoc attachments;
35     private String JavaDoc alternateTextMessage;
36
37     /**
38      * @return Returns the alternateTextMessage.
39      */

40     public String JavaDoc getAlternateTextMessage() {
41         return alternateTextMessage;
42     }
43     /**
44      * @param alternateTextMessage The alternateTextMessage to set.
45      */

46     public void setAlternateTextMessage(String JavaDoc alternateTextMessage) {
47         this.alternateTextMessage = alternateTextMessage;
48     }
49     private boolean html;
50
51
52
53
54     public DeliverCampaignThread(String JavaDoc name) {
55         super(name);
56
57     }
58
59     /**
60      * Returns the attachments.
61      * @return List
62      */

63     public java.util.List JavaDoc getAttachments() {
64         if (attachments == null)
65             return new java.util.ArrayList JavaDoc();
66         return attachments;
67     }
68
69     /**
70      * Sets the attachments.
71      * @param attachments The attachments to set
72      */

73     public void setAttachments(List JavaDoc attachments) {
74         this.attachments = attachments;
75     }
76
77     public void run() {
78
79
80         //add it to the campaign's children
81
DotConnect db = new DotConnect();
82         db.setSQL("insert into tree (parent, child, relation_type) values(?,?,?)");
83         db.addParam(campaign.getInode());
84         db.addParam(recipient.getInode());
85         db.addParam("child");
86         db.getResult();
87
88         Campaign campaign = getCampaign();
89         Communication comm = (Communication) InodeFactory.getChildOfClass(campaign, Communication.class);
90         Mailer Mailer = new Mailer();
91
92         //get subject and message
93
String JavaDoc subject = comm.getEmailSubject();
94
95         //personalize subject and message
96
subject = subject.replaceAll("<varName>", recipient.getName());
97         subject = subject.replaceAll("<varEmail>", subscriber.getEmailAddress());
98
99         Mailer.setRecipientId(recipient.getInode());
100         Mailer.setFromName(comm.getFromName());
101         Logger.info("comm.getFromName()="+comm.getFromName());
102         Mailer.setFromEmail(comm.getFromEmail());
103         Logger.info("comm.getFromEmail()="+comm.getFromEmail());
104         Mailer.setToEmail(recipient.getEmail());
105         
106         if(UtilMethods.isSet(recipient.getLastname()))
107             Mailer.setToName(recipient.getName()+" "+recipient.getLastname());
108         else
109             Mailer.setToName(recipient.getName());
110         
111         Mailer.setSubject(subject);
112
113         String JavaDoc finalMessageStr = message.toString();
114
115         finalMessageStr = finalMessageStr.replaceAll("<rId(\")?>", recipient.getInode() + "");
116         //Variables replacement from subscriber object
117
finalMessageStr = finalMessageStr.replaceAll("<varName(\")?>", (subscriber.getFirstName()!=null) ? subscriber.getFirstName() : "");
118         finalMessageStr = finalMessageStr.replaceAll("<varEmail(\")?>", (subscriber.getEmailAddress()!=null) ? subscriber.getEmailAddress() : "");
119
120         finalMessageStr = finalMessageStr.replaceAll("<varMiddleName(\")?>", (subscriber.getMiddleName()!=null) ? subscriber.getMiddleName() : "");
121         finalMessageStr = finalMessageStr.replaceAll("<varLastName(\")?>", (subscriber.getLastName()!=null) ? subscriber.getLastName() : "");
122
123         UserProxy userproxy = UserProxyFactory.getUserProxy(subscriber);
124         finalMessageStr = finalMessageStr.replaceAll("<varLastMessage(\")?>", (userproxy.getLastMessage()!=null) ? userproxy.getLastMessage() : "");
125
126         Address address = new Address();
127         try {
128             List JavaDoc adds = PublicAddressFactory.getAddressesByUserId(subscriber.getUserId());
129             if (adds != null && adds.size() > 0) {
130                 address = (Address) adds.get(0);
131             }
132         }
133         catch(Exception JavaDoc e) {
134             Logger.error(DeliverCampaignThread.class, "deliverCampaigns Failed" + e);
135             e.printStackTrace(System.out);
136         }
137         finalMessageStr = finalMessageStr.replaceAll("<varAddress1(\")?>", (address.getStreet1()!=null) ? address.getStreet1() : "");
138         finalMessageStr = finalMessageStr.replaceAll("<varAddress2(\")?>", (address.getStreet2()!=null) ? address.getStreet2() : "");
139         finalMessageStr = finalMessageStr.replaceAll("<varPhone(\")?>", (address.getPhone()!=null) ? address.getPhone() : "");
140         finalMessageStr = finalMessageStr.replaceAll("<varState(\")?>", (address.getState()!=null) ? address.getState() : "");
141         finalMessageStr = finalMessageStr.replaceAll("<varCity(\")?>", (address.getCity()!=null) ? address.getCity() : "");
142         finalMessageStr = finalMessageStr.replaceAll("<varCountry(\")?>", (address.getCountry()!=null) ? address.getCountry() : "");
143         finalMessageStr = finalMessageStr.replaceAll("<varZip(\")?>", (address.getZip()!=null) ? address.getZip() : "");
144
145         //gets default company to get locale
146
Company comp = PublicCompanyFactory.getDefaultCompany();
147
148         try {
149             String JavaDoc var1 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var1");
150             String JavaDoc var2 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var2");
151             String JavaDoc var3 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var3");
152             String JavaDoc var4 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var4");
153             String JavaDoc var5 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var5");
154             String JavaDoc var6 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var6");
155             String JavaDoc var7 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var7");
156             String JavaDoc var8 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var8");
157             String JavaDoc var9 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var9");
158             String JavaDoc var10 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var10");
159             String JavaDoc var11 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var11");
160             String JavaDoc var12 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var12");
161             String JavaDoc var13 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var13");
162             String JavaDoc var14 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var14");
163             String JavaDoc var15 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var15");
164             String JavaDoc var16 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var16");
165             String JavaDoc var17 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var17");
166             String JavaDoc var18 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var18");
167             String JavaDoc var19 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var19");
168             String JavaDoc var20 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var20");
169             String JavaDoc var21 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var21");
170             String JavaDoc var22 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var22");
171             String JavaDoc var23 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var23");
172             String JavaDoc var24 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var24");
173             String JavaDoc var25 = LanguageUtil.get(comp.getCompanyId(), comp.getLocale(), "mailing.list.var25");
174
175             //additional variables
176
finalMessageStr = finalMessageStr.replaceAll("<" + var1 + "(\")?>", (userproxy.getVar1()!=null) ? userproxy.getVar1() : "");
177             finalMessageStr = finalMessageStr.replaceAll("<" + var2 + "(\")?>", (userproxy.getVar2()!=null) ? userproxy.getVar2() : "");
178             finalMessageStr = finalMessageStr.replaceAll("<" + var3 + "(\")?>", (userproxy.getVar3()!=null) ? userproxy.getVar3() : "");
179             finalMessageStr = finalMessageStr.replaceAll("<" + var4 + "(\")?>", (userproxy.getVar4()!=null) ? userproxy.getVar4() : "");
180             finalMessageStr = finalMessageStr.replaceAll("<" + var5 + "(\")?>", (userproxy.getVar5()!=null) ? userproxy.getVar5() : "");
181             finalMessageStr = finalMessageStr.replaceAll("<" + var6 + "(\")?>", (userproxy.getVar6()!=null) ? userproxy.getVar6() : "");
182             finalMessageStr = finalMessageStr.replaceAll("<" + var7 + "(\")?>", (userproxy.getVar7()!=null) ? userproxy.getVar7() : "");
183             finalMessageStr = finalMessageStr.replaceAll("<" + var8 + "(\")?>", (userproxy.getVar8()!=null) ? userproxy.getVar8() : "");
184             finalMessageStr = finalMessageStr.replaceAll("<" + var9 + "(\")?>", (userproxy.getVar9()!=null) ? userproxy.getVar9() : "");
185             finalMessageStr = finalMessageStr.replaceAll("<" + var10 + "(\")?>", (userproxy.getVar10()!=null) ? userproxy.getVar10() : "");
186             finalMessageStr = finalMessageStr.replaceAll("<" + var11 + "(\")?>", (userproxy.getVar11()!=null) ? userproxy.getVar11() : "");
187             finalMessageStr = finalMessageStr.replaceAll("<" + var12 + "(\")?>", (userproxy.getVar12()!=null) ? userproxy.getVar12() : "");
188             finalMessageStr = finalMessageStr.replaceAll("<" + var13 + "(\")?>", (userproxy.getVar13()!=null) ? userproxy.getVar13() : "");
189             finalMessageStr = finalMessageStr.replaceAll("<" + var14 + "(\")?>", (userproxy.getVar14()!=null) ? userproxy.getVar14() : "");
190             finalMessageStr = finalMessageStr.replaceAll("<" + var15 + "(\")?>", (userproxy.getVar15()!=null) ? userproxy.getVar15() : "");
191             finalMessageStr = finalMessageStr.replaceAll("<" + var16 + "(\")?>", (userproxy.getVar16()!=null) ? userproxy.getVar16() : "");
192             finalMessageStr = finalMessageStr.replaceAll("<" + var17 + "(\")?>", (userproxy.getVar17()!=null) ? userproxy.getVar17() : "");
193             finalMessageStr = finalMessageStr.replaceAll("<" + var18 + "(\")?>", (userproxy.getVar18()!=null) ? userproxy.getVar18() : "");
194             finalMessageStr = finalMessageStr.replaceAll("<" + var19 + "(\")?>", (userproxy.getVar19()!=null) ? userproxy.getVar19() : "");
195             finalMessageStr = finalMessageStr.replaceAll("<" + var20 + "(\")?>", (userproxy.getVar20()!=null) ? userproxy.getVar20() : "");
196             finalMessageStr = finalMessageStr.replaceAll("<" + var21 + "(\")?>", (userproxy.getVar21()!=null) ? userproxy.getVar21() : "");
197             finalMessageStr = finalMessageStr.replaceAll("<" + var22 + "(\")?>", (userproxy.getVar22()!=null) ? userproxy.getVar22() : "");
198             finalMessageStr = finalMessageStr.replaceAll("<" + var23 + "(\")?>", (userproxy.getVar23()!=null) ? userproxy.getVar23() : "");
199             finalMessageStr = finalMessageStr.replaceAll("<" + var24 + "(\")?>", (userproxy.getVar24()!=null) ? userproxy.getVar24() : "");
200             finalMessageStr = finalMessageStr.replaceAll("<" + var25 + "(\")?>", (userproxy.getVar25()!=null) ? userproxy.getVar25() : "");
201
202             //additional variables
203
finalMessageStr = finalMessageStr.replaceAll("<var1(\")?>", (userproxy.getVar1()!=null) ? userproxy.getVar1() : "");
204             finalMessageStr = finalMessageStr.replaceAll("<var2(\")?>", (userproxy.getVar2()!=null) ? userproxy.getVar2() : "");
205             finalMessageStr = finalMessageStr.replaceAll("<var3(\")?>", (userproxy.getVar3()!=null) ? userproxy.getVar3() : "");
206             finalMessageStr = finalMessageStr.replaceAll("<var4(\")?>", (userproxy.getVar4()!=null) ? userproxy.getVar4() : "");
207             finalMessageStr = finalMessageStr.replaceAll("<var5(\")?>", (userproxy.getVar5()!=null) ? userproxy.getVar5() : "");
208             finalMessageStr = finalMessageStr.replaceAll("<var6(\")?>", (userproxy.getVar6()!=null) ? userproxy.getVar6() : "");
209             finalMessageStr = finalMessageStr.replaceAll("<var7(\")?>", (userproxy.getVar7()!=null) ? userproxy.getVar7() : "");
210             finalMessageStr = finalMessageStr.replaceAll("<var8(\")?>", (userproxy.getVar8()!=null) ? userproxy.getVar8() : "");
211             finalMessageStr = finalMessageStr.replaceAll("<var9(\")?>", (userproxy.getVar9()!=null) ? userproxy.getVar9() : "");
212             finalMessageStr = finalMessageStr.replaceAll("<var10(\")?>", (userproxy.getVar10()!=null) ? userproxy.getVar10() : "");
213             finalMessageStr = finalMessageStr.replaceAll("<var11(\")?>", (userproxy.getVar11()!=null) ? userproxy.getVar11() : "");
214             finalMessageStr = finalMessageStr.replaceAll("<var12(\")?>", (userproxy.getVar12()!=null) ? userproxy.getVar12() : "");
215             finalMessageStr = finalMessageStr.replaceAll("<var13(\")?>", (userproxy.getVar13()!=null) ? userproxy.getVar13() : "");
216             finalMessageStr = finalMessageStr.replaceAll("<var14(\")?>", (userproxy.getVar14()!=null) ? userproxy.getVar14() : "");
217             finalMessageStr = finalMessageStr.replaceAll("<var15(\")?>", (userproxy.getVar15()!=null) ? userproxy.getVar15() : "");
218             finalMessageStr = finalMessageStr.replaceAll("<var16(\")?>", (userproxy.getVar16()!=null) ? userproxy.getVar16() : "");
219             finalMessageStr = finalMessageStr.replaceAll("<var17(\")?>", (userproxy.getVar17()!=null) ? userproxy.getVar17() : "");
220             finalMessageStr = finalMessageStr.replaceAll("<var18(\")?>", (userproxy.getVar18()!=null) ? userproxy.getVar18() : "");
221             finalMessageStr = finalMessageStr.replaceAll("<var19(\")?>", (userproxy.getVar19()!=null) ? userproxy.getVar19() : "");
222             finalMessageStr = finalMessageStr.replaceAll("<var20(\")?>", (userproxy.getVar20()!=null) ? userproxy.getVar20() : "");
223             finalMessageStr = finalMessageStr.replaceAll("<var21(\")?>", (userproxy.getVar21()!=null) ? userproxy.getVar21() : "");
224             finalMessageStr = finalMessageStr.replaceAll("<var22(\")?>", (userproxy.getVar22()!=null) ? userproxy.getVar22() : "");
225             finalMessageStr = finalMessageStr.replaceAll("<var23(\")?>", (userproxy.getVar23()!=null) ? userproxy.getVar23() : "");
226             finalMessageStr = finalMessageStr.replaceAll("<var24(\")?>", (userproxy.getVar24()!=null) ? userproxy.getVar24() : "");
227             finalMessageStr = finalMessageStr.replaceAll("<var25(\")?>", (userproxy.getVar25()!=null) ? userproxy.getVar25() : "");
228
229         }
230         catch(LanguageException le) {
231             Logger.error(DeliverCampaignThread.class,le.getMessage());
232         }
233
234         if (html) {
235             //personalize
236
Mailer.setHTMLBody(finalMessageStr);
237             if (alternateTextMessage != null) {
238                 Mailer.setTextBody(alternateTextMessage);
239             }
240         }
241         else {
242             //personalize
243
Mailer.setTextBody(finalMessageStr);
244         }
245
246         //add the attachments
247
java.util.Iterator JavaDoc z = getAttachments().iterator();
248         while (z.hasNext()) {
249             com.dotmarketing.portlets.files.model.File f = (com.dotmarketing.portlets.files.model.File) z.next();
250             Mailer.addAttachment(new java.io.File JavaDoc(Config.CONTEXT.getRealPath(f.getURI())));
251         }
252
253         boolean sent = Mailer.sendMessage();
254         if (!sent) {
255
256             //update subscriber
257
db.setSQL("update subscriber set last_result = ?, last_message = ? where inode = ?");
258             db.addParam(500);
259             db.addParam(Mailer.getErrorMessage());
260             db.addParam(userproxy.getInode());
261             db.getResult();
262
263             //update recipient
264
db.setSQL("update recipient set last_result = ?, last_message = ? where inode = ?");
265             db.addParam(500);
266             db.addParam(Mailer.getErrorMessage());
267             db.addParam(recipient.getInode());
268             db.getResult();
269         }
270         else{
271
272             //update subscriber
273
db.setSQL("update subscriber set last_result = ?, last_message = ? where inode = ?");
274             db.addParam(200);
275             db.addParam("Mail Sent");
276             db.addParam(userproxy.getInode());
277             db.getResult();
278
279             //update recipient
280
db.setSQL("update recipient set last_result = ?, last_message = ? where inode = ?");
281             db.addParam(200);
282             db.addParam("Mail Sent");
283             db.addParam(recipient.getInode());
284             db.getResult();
285
286             //add the comment to the user record
287
Date JavaDoc today = new Date JavaDoc();
288             String JavaDoc commentComment = "Campaign: "+comm.getTitle() + " sent on " + UtilMethods.dateToHTMLDate(today);
289             UserComment comment = new UserComment();
290
291             comment.setComment(commentComment);
292             comment.setDate(today);
293             comment.setMethod(UserComment.METHOD_MARKETING_LIST);
294             comment.setTypeComment(UserComment.TYPE_OUTGOING);
295             comment.setType("mailing_list");
296             comment.setSubject(commentComment);
297             comment.setCommentUserId(subscriber.getUserId());
298             comment.setUserId(subscriber.getUserId());
299             comment.setCommunicationId(comm.getInode());
300             UserCommentsFactory.saveUserComment(comment);
301         }
302         DotHibernate.closeSession();
303
304         //this.destroy();
305
}
306
307
308     /**
309      * Returns the campaign.
310      * @return Campaign
311      */

312     public Campaign getCampaign() {
313         return campaign;
314     }
315
316     /**
317      * Sets the campaign.
318      * @param campaign The campaign to set
319      */

320     public void setCampaign(Campaign campaign) {
321         this.campaign = campaign;
322     }
323
324     /**
325      * Returns the s.
326      * @return Subscriber
327      */

328     public User getSubscriber() {
329         return subscriber;
330     }
331
332     /**
333      * Sets the subscriber.
334      * @param subscriber The subscriber to set
335      */

336     public void setSubscriber(User subscriber) {
337         this.subscriber = subscriber;
338     }
339
340     /**
341      * Returns the html.
342      * @return boolean
343      */

344     public boolean isHtml() {
345         return html;
346     }
347
348     /**
349      * Sets the html.
350      * @param html The html to set
351      */

352     public void setHtml(boolean html) {
353         this.html = html;
354     }
355
356     /**
357      * Returns the message.
358      * @return StringBuffer
359      */

360     public StringBuffer JavaDoc getMessage() {
361         return message;
362     }
363
364     /**
365      * Sets the message.
366      * @param message The message to set
367      */

368     public void setMessage(StringBuffer JavaDoc message) {
369         this.message = message;
370     }
371
372
373     /**
374      * Returns the recipient.
375      * @return Recipient
376      */

377     public Recipient getRecipient() {
378         return recipient;
379     }
380
381
382
383     /**
384      * Sets the recipient.
385      * @param recipient The recipient to set
386      */

387     public void setRecipient(Recipient recipient) {
388         this.recipient = recipient;
389     }
390
391
392
393
394
395 }
396
Popular Tags