Author: simoneg
Date: Wed Apr 14 19:01:22 2010
New Revision: 934121

URL: http://svn.apache.org/viewvc?rev=934121&view=rev
Log:
Newsletter preview from job

Added:
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
Modified:
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java

Modified: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java?rev=934121&r1=934120&r2=934121&view=diff
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
 (original)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
 Wed Apr 14 19:01:22 2010
@@ -3,15 +3,20 @@ package org.apache.magma.web.newsletter;
 import org.apache.magma.database.Database;
 import org.apache.magma.domain.newsletter.Newsletter;
 import org.apache.magma.domain.newsletter.Newsletter.ProgressStatus;
+import org.apache.magma.domain.user.User;
+import org.apache.magma.email.Email;
 import org.apache.magma.jobs.JobStatus;
 import org.apache.magma.jobs.Scheduler;
 import org.apache.magma.website.CompoundType;
 import org.apache.magma.website.HtmlProducer;
 import org.apache.magma.website.admin.CompleteCrudHandler;
 import org.apache.magma.website.beansview.ShowBean;
+import org.apache.magma.website.beansview.SmartForm;
 import org.apache.magma.website.producers.TemplatingProducer;
 
 public class CrudNewsletter extends CompleteCrudHandler<Newsletter>{
+       protected User sessionUser;
+
        public CrudNewsletter(){
                super(Newsletter.class);
        }
@@ -38,4 +43,22 @@ public class CrudNewsletter extends Comp
                }
                return new TemplatingProducer();
        }
+       
+       public SmartForm handlePreview(Newsletter n) {
+               PreviewRequest pr = new PreviewRequest();
+               pr.setNewsletter(n);
+               SmartForm ret = new SmartForm(pr, "hiddenPreview");
+               return ret;
+       }
+       
+       public HtmlProducer hiddenPreview(PreviewRequest req) {
+               SendNewsletter sender = new SendNewsletter();
+               sender.setNewsletter(n);
+               req.setUser(this.sessionUser);
+               sender.setPreview(req);
+               Scheduler sched = new Scheduler();
+               JobStatus run = sched.run("Sending newsletter preview", sender);
+               return new TemplatingProducer("previewSent");
+       }
+       
 }

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java?rev=934121&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
 Wed Apr 14 19:01:22 2010
@@ -0,0 +1,44 @@
+package org.apache.magma.web.newsletter;
+
+import org.apache.magma.beans.MagReadOnly;
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.domain.newsletter.Newsletter;
+import org.apache.magma.domain.user.User;
+import org.apache.magma.validation.validators.Email;
+import org.apache.magma.validation.validators.Required;
+import org.apache.magma.view.MagView;
+
+...@magmabean
+public class PreviewRequest {
+       
+       private String targetEmail;
+       private Newsletter newsletter;
+       private User user;
+       
+       @MagView(order=1)
+       @Required
+       @Email
+       public String getTargetEmail() {
+               return targetEmail;
+       }
+       public void setTargetEmail(String targetEmail) {
+               this.targetEmail = targetEmail;
+       }
+       
+       public Newsletter getNewsletter() {
+               return newsletter;
+       }
+       public void setNewsletter(Newsletter newsletter) {
+               this.newsletter = newsletter;
+       }
+       
+       @MagView(order=2, label="Test user")
+       @MagReadOnly
+       public User getUser() {
+               return user;
+       }
+       public void setUser(User user) {
+               this.user = user;
+       }
+
+}

Modified: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java?rev=934121&r1=934120&r2=934121&view=diff
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
 (original)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
 Wed Apr 14 19:01:22 2010
@@ -16,34 +16,48 @@ public class SendNewsletter implements J
        
        private Report report;
        private Newsletter newsletter;
+       private PreviewRequest preview;
        
        public void run(){
                try { 
                        Thread.sleep(1000); 
                } catch (Exception e) {}
-               Database db = new Database();
-               newsletter = db.load(Newsletter.class, newsletter.getId());
-               report.setState("Searching for users...");
-               List<User> list = db.query(User.class, "where x.active=?1 and 
x.newsletter=?2", true, true);
-               report.setTotal(list.size());
-               for(User user : list){
-                       report.setState("Sending to " + user.getEmail());
-                       try{
-                               Email mail = new Email();
-                               mail.to(user.getEmail());
-                               mail.subject(newsletter.getTitle());
-                               HtmlProducer prod = new 
TemplatingProducer("/org/apache/magma/web/newsletter/newsletter")
-                                       .addParameter("letter", newsletter)
-                                       .addParameter("user", user);
-                               mail.html(prod);
-                               mail.send();
-                               report.step();                          
-                       } catch (Exception e) {
-                               e.printStackTrace();
+               if (preview != null) {
+                       report.setState("Sending preview");
+                       Email mail = new Email();
+                       mail.to(preview.getTargetEmail());
+                       mail.subject(newsletter.getTitle());
+                       HtmlProducer prod = new 
TemplatingProducer("/org/apache/magma/web/newsletter/newsletter")
+                               .addParameter("letter", newsletter)
+                               .addParameter("user", preview.getUser());
+                       mail.html(prod);
+                       mail.send();
+                       report.finished();
+               } else {
+                       Database db = new Database();
+                       newsletter = db.load(Newsletter.class, 
newsletter.getId());
+                       report.setState("Searching for users...");
+                       List<User> list = db.query(User.class, "where 
x.active=?1 and x.newsletter=?2", true, true);
+                       report.setTotal(list.size());
+                       for(User user : list){
+                               report.setState("Sending to " + 
user.getEmail());
+                               try{
+                                       Email mail = new Email();
+                                       mail.to(user.getEmail());
+                                       mail.subject(newsletter.getTitle());
+                                       HtmlProducer prod = new 
TemplatingProducer("/org/apache/magma/web/newsletter/newsletter")
+                                               .addParameter("letter", 
newsletter)
+                                               .addParameter("user", user);
+                                       mail.html(prod);
+                                       mail.send();
+                                       report.step();                          
+                               } catch (Exception e) {
+                                       e.printStackTrace();
+                               }
                        }
+                       newsletter.setProgress(ProgressStatus.SENT);
+                       db.save(newsletter);
                }
-               newsletter.setProgress(ProgressStatus.SENT);
-               db.save(newsletter);
        }
        
        public void setReport (Report report){
@@ -56,6 +70,14 @@ public class SendNewsletter implements J
        public void setNewsletter (Newsletter newsletter){
                this.newsletter = newsletter;
        }
+
+       public PreviewRequest getPreview() {
+               return preview;
+       }
+
+       public void setPreview(PreviewRequest preview) {
+               this.preview = preview;
+       }
        
        
 }

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm?rev=934121&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
 Wed Apr 14 19:01:22 2010
@@ -0,0 +1 @@
+<p>$mag.tr("Preview sent")</p>
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to