Update of 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter
In directory 
james.mmbase.org:/tmp/cvs-serv31309/portlets-newsletter/src/java/com/finalist/newsletter

Modified Files:
        NewsletterAutoCreateCronJob.java 
Log Message:
CMSC-743,Newsletter: possibility to send a test email


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter
See also: http://www.mmbase.org/jira/browse/CMSC-743


Index: NewsletterAutoCreateCronJob.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/NewsletterAutoCreateCronJob.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- NewsletterAutoCreateCronJob.java    15 Apr 2008 11:20:17 -0000      1.2
+++ NewsletterAutoCreateCronJob.java    16 Apr 2008 03:55:11 -0000      1.3
@@ -40,24 +40,44 @@
       List<Node> newslettersToPublish = new ArrayList<Node>();
       for (int i = 0; i < newsletters.size(); i++) {
          Node newsletter = newsletters.getNode(i);
-         
          if (!Publish.isPublished(newsletter)) {
             Object schedule = newsletter.getValue("schedule");
             Date lastCreateDateTime = newsletter.getDateValue("lastcreate");
             if (schedule != null) {
+               shouldPublish(newslettersToPublish, newsletter, schedule,
+                     lastCreateDateTime);
+            } 
+         } 
+      }
+      return (newslettersToPublish);
+   }
+
+   private void shouldPublish(List<Node> newslettersToPublish, Node newsletter,
+         Object schedule, Date lastCreateDateTime) {
                String expression = (String)schedule;
                String[] expressions = expression.split("\\|");
+      if(isShouldPublish(expressions,lastCreateDateTime)) {
+         newslettersToPublish.add(newsletter);
+      }
+   }
+   
+   private boolean isShouldPublish(String[] expressions,Date 
lastCreateDateTime) {
+      boolean isPublish = false;
                DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm");
+      Date minDate =  null;
+      try {
+         minDate =  df.parse("01-01-1970 00:00");
+      } catch (ParseException e1) {
+         log.debug("--> parse date Exception");;
+      }
                //only once  pattern :
                if(expressions[0].equals("1")) { 
-                  log.debug("---------->AutoCreateCronJob 
type1----------------");
                   String datetime = expressions[1]+" 
"+expressions[2]+":"+expressions[3];
                   Date now = new Date();
                   try {
-                     Date minDate = df.parse("01-01-1970 00:00");
                      Date date = df.parse(datetime);
                      if(now.after(date) && (lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime))) {
-                        newslettersToPublish.add(newsletter);
+               isPublish = true;
                      }
                   } 
                   catch (ParseException e) {
@@ -65,46 +85,32 @@
                   }
                }
                else if (expressions[0].equals("2")) {
-                  log.debug("---------->AutoCreateCronJob 
type2----------------");
                   String datetime = expressions[1]+" 
"+expressions[2]+":"+expressions[3];
                   Date now = new Date();
                   Calendar calender = Calendar.getInstance();
                   try {
-                     Date minDate = df.parse("01-01-1970 00:00");
                      Date date = df.parse(datetime);
                      if(now.after(date)) {
                         if(expressions[4].equals("0")) {
-                           if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)) {
-                              newslettersToPublish.add(newsletter);
-                           }
-                           else  {
-                              if(!DateUtils.isSameDay(now, 
lastCreateDateTime)) {
-                                 newslettersToPublish.add(newsletter);
-                              }
-                           }
+                  isPublish = compareDate(lastCreateDateTime, isPublish,
+                        minDate, now);
                         }
                         else if(expressions[4].equals("1")) {
                            if(calender.get(Calendar.DAY_OF_WEEK) != 
Calendar.SATURDAY && calender.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
-                              if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)) {
-                                 newslettersToPublish.add(newsletter);
-                              }
-                              else  {
-                                 if(!DateUtils.isSameDay(now, 
lastCreateDateTime)) {
-                                    newslettersToPublish.add(newsletter);
-                                 }
-                              }
+                     isPublish = compareDate(lastCreateDateTime, isPublish,
+                           minDate, now);
                            }
                         }
                         else if(expressions[4].equals("2")) {
                            int interval = Integer.parseInt(expressions[5]);
                            if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)) {
                               if(DateUtils.isSameDay(DateUtils.addDays(date, 
interval),now)) {
-                                 newslettersToPublish.add(newsletter);
+                        isPublish = true;
                               }
                            }
                            else {
                               
if(DateUtils.isSameDay(DateUtils.addDays(lastCreateDateTime, interval),now)) {
-                                 newslettersToPublish.add(newsletter);
+                        isPublish = true;
                               }
                            }
                         }
@@ -115,13 +121,11 @@
                   }
                }
                else if(expressions[0].equals("3")) {
-                  log.debug("---------->AutoCreateCronJob 
type3----------------");
                   Calendar createTime = Calendar.getInstance();
                   createTime.set(Calendar.HOUR_OF_DAY, 
Integer.parseInt(expressions[1]));
                   createTime.set(Calendar.MINUTE, 
Integer.parseInt(expressions[2]));
                   
                   Calendar calender = Calendar.getInstance();
-                  boolean flag = false;
                   char[] weeks = expressions[4].toCharArray();
                 
                   for(int j = 0 ; j < weeks.length; j++) {
@@ -130,16 +134,15 @@
                      if((calender.get(Calendar.DAY_OF_WEEK) != 1 && 
calender.get(Calendar.DAY_OF_WEEK) == (Integer.parseInt(week)+1)) || 
(calender.get(Calendar.DAY_OF_WEEK) == 1 && Integer.parseInt(week) == 7)) {
                         if(calender.after(createTime)) {
                            try {
-                              Date minDate = df.parse("01-01-1970 00:00");
                               if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)){
-                                 flag = true;
+                        isPublish = true;
                                  break;
                               }
                               else {
                                  int interval = 
Integer.parseInt(expressions[3]);
                                  Date beCreate = 
DateUtils.addWeeks(lastCreateDateTime, interval);
                                  if(DateUtils.isSameDay(new Date(),beCreate )) 
{
-                                    flag = true;
+                           isPublish = true;
                                     break; 
                                  }
                               }
@@ -147,48 +150,36 @@
                            catch (NumberFormatException e) {
                               log.debug("-->NumberFormatException 
"+e.getMessage());
                            } 
-                           catch (ParseException e) {
-                              log.debug("--> parse date Exception 
"+e.getMessage());
                            }
                         }
                      }
                   }
-                  if(flag) {
-                     newslettersToPublish.add(newsletter);
-                  }
-               }
                else if(expressions[0].equals("4")) {
-                  log.debug("---------->AutoCreateCronJob 
type4----------------");
                   Calendar createTime = Calendar.getInstance();
                   createTime.set(Calendar.HOUR_OF_DAY, 
Integer.parseInt(expressions[1]));
                   createTime.set(Calendar.MINUTE, 
Integer.parseInt(expressions[2]));
-                  boolean flag = false;
                   Calendar calender = Calendar.getInstance();
                   if(expressions[3].equals("0")) {
                      String day = expressions[4];
                      char[] months = expressions[5].toCharArray();
                      for(int j = 0 ; j < months.length ; j++) {
                         String month = String.valueOf(months[j]);
-                        if((Integer.parseInt(month) == 
calender.get(Calendar.MONTH)) ||(month.equals("a") && 
calender.get(Calendar.MONTH) == 10) || (month.equals("b") && 
calender.get(Calendar.MONTH) == 11)) {
+               System.out.println("month="+month);
+               System.out.println(Arrays.toString(months));
+               if(!month.equals("a") && !month.equals("b") && 
(Integer.parseInt(month) == calender.get(Calendar.MONTH)) || (month.equals("b") 
&& calender.get(Calendar.MONTH) == 11) || (month.equals("a") && 
calender.get(Calendar.MONTH) == 10)) {
                            if(calender.get(Calendar.DAY_OF_MONTH) == 
Integer.parseInt(day)) {
                               if(calender.after(createTime)) {
-                                 try {
-                                    Date minDate = df.parse("01-01-1970 
00:00");
                                     if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)){
-                                       flag = true;
+                              isPublish = true;
                                        break;
                                     }
                                     else {
                                        if(!DateUtils.isSameDay(new 
Date(),lastCreateDateTime )) {
-                                          flag = true;
+                                 isPublish = true;
                                           break; 
                                        }
                                     }
                                  }
-                                 catch (ParseException e) {
-                                    log.debug("--> ParseException 
"+e.getMessage());
-                                 }
-                              }
                            }
                         }
                      }
@@ -200,40 +191,41 @@
                      char[] months = expressions[6].toCharArray();
                      for(int j = 0 ; j < months.length ; j++) {
                         String month = String.valueOf(months[j]);
-                        if((Integer.parseInt(month) == 
calender.get(Calendar.MONTH)) || (month.equals("a") && 
calender.get(Calendar.MONTH) == 10) || (month.equals("b") && 
calender.get(Calendar.MONTH) == 11)) {
+               if(!month.equals("a") && !month.equals("b") && 
(Integer.parseInt(month) == calender.get(Calendar.MONTH)) || (month.equals("a") 
&& calender.get(Calendar.MONTH) == 10) || (month.equals("b") && 
calender.get(Calendar.MONTH) == 11)) {
                            if(calender.get(Calendar.WEEK_OF_MONTH) == 
Integer.parseInt(whichWeek)) {
                               if(calender.get(Calendar.DAY_OF_WEEK)!= 1 && 
calender.get(Calendar.DAY_OF_WEEK)== (Integer.parseInt(week)+1)) {
                                  if(calender.after(createTime)) {
-                                    try {
-                                       Date minDate = df.parse("01-01-1970 
00:00");
                                        if(lastCreateDateTime == null || 
DateUtils.isSameDay(minDate, lastCreateDateTime)){
-                                          flag = true;
+                                 isPublish = true;
                                           break;
                                        }
                                        else {
                                           if(!DateUtils.isSameDay(new 
Date(),lastCreateDateTime )) {
-                                             flag = true;
+                                    isPublish = true;
                                              break; 
                                           }
                                        }
                                     } 
-                                    catch (ParseException e) {
-                                       log.debug("--> ParseException 
"+e.getMessage());
-                                    }
                                  }
                               }
                            }
                         }
                      }
                   }
-                  if(flag) {
-                     newslettersToPublish.add(newsletter);
-                  }
+      return isPublish;
                }
+
+   private boolean compareDate(Date lastCreateDateTime, boolean isPublish,
+         Date minDate, Date now) {
+      if(lastCreateDateTime == null || DateUtils.isSameDay(minDate, 
lastCreateDateTime)) {
+         isPublish = true;
             } 
+      else  {
+         if(!DateUtils.isSameDay(now, lastCreateDateTime)) {
+            isPublish = true;
          } 
       }
-      return (newslettersToPublish);
+      return isPublish;
    }
 
    public void init(CronEntry arg0) {
@@ -241,7 +233,6 @@
 
    }
 
-   
    public void run() { 
       List<Node> newslettersToPublish = getNewslettersToPublish();
       log.info("---------->AutoCreateCronJob newsletters size 
----------------["+newslettersToPublish == 
null?"0":newslettersToPublish.size()+"]");
@@ -260,4 +251,6 @@
    public void stop() {
       log.info("Stopping Newsletter CronJob");
    }
+   
+   
 }
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to