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