Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util
In directory
james.mmbase.org:/tmp/cvs-serv18248/src/java/com/finalist/newsletter/util
Modified Files:
NewsletterUtil.java
Log Message:
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util
Index: NewsletterUtil.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/util/NewsletterUtil.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- NewsletterUtil.java 20 May 2008 09:49:52 -0000 1.31
+++ NewsletterUtil.java 28 May 2008 11:06:56 -0000 1.32
@@ -2,14 +2,18 @@
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
+import java.util.Locale;
+import java.util.ResourceBundle;
import net.sf.mmapps.commons.beans.MMBaseNodeMapper;
import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
+import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.StringUtils;
@@ -33,6 +37,8 @@
import com.finalist.newsletter.cao.impl.NewsLetterStatisticCAOImpl;
import com.finalist.newsletter.domain.StatisticResult.HANDLE;
import com.finalist.newsletter.services.impl.StatisticServiceImpl;
+import net.sf.mmapps.commons.bridge.RelationUtil;
+import com.finalist.newsletter.domain.Schedule;
public abstract class NewsletterUtil {
private static Log log = LogFactory
@@ -462,4 +468,230 @@
inputString = StringUtils.replace(inputString, "src=\"/", "src=\"" +
liveURL);
return inputString;
}
+
+ public static void addScheduleForNewsletter(Node newsletterNode) {
+ NodeManager scheduleNodeManager =
newsletterNode.getCloud().getNodeManager("schedule");
+ NodeList schedules
=SearchUtil.findRelatedOrderedNodeList(newsletterNode, "schedule", "posrel",
"createdatetime","DOWN");
+ if(schedules.size() == 0) {
+ addScheduleNode(newsletterNode,scheduleNodeManager);
+ }
+ else {
+ Node firstScheduleNode = schedules.getNode(0);
+
if(firstScheduleNode.getStringValue("expression").equals(newsletterNode.getStringValue("schedule"))){
+ return;
+ }
+ for(int i = 0; i < schedules.size(); i ++) {
+ Node scheduleNode = schedules.getNode(i);
+
if(scheduleNode.getStringValue("expression").equals(newsletterNode.getStringValue("schedule")))
{
+ scheduleNode.setLongValue("createdatetime",
System.currentTimeMillis());
+ scheduleNode.commit();
+ return;
+ }
+ }
+ addScheduleNode(newsletterNode,scheduleNodeManager);
+ }
+ }
+
+ public static void addScheduleNode(Node newsletterNode, NodeManager
scheduleNodeManager) {
+ Node scheduleNode = scheduleNodeManager.createNode();
+
scheduleNode.setStringValue("expression",newsletterNode.getStringValue("schedule"));
+ scheduleNode.setLongValue("createdatetime",System.currentTimeMillis());
+ scheduleNode.commit();
+ RelationUtil.createRelation(newsletterNode, scheduleNode, "posrel");
+ }
+
+ public static List<Schedule> getSchedulesBynewsletterId(int id) {
+ List<Schedule> schedules = new ArrayList<Schedule>();
+ Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+ Node newsletterNode = cloud.getNode(id);
+ NodeList scheduleList
=SearchUtil.findRelatedOrderedNodeList(newsletterNode, "schedule", "posrel",
"createdatetime","DOWN");
+ for(int i = 1 ; i < scheduleList.size() ;i++) {
+ Node scheduleNode = scheduleList.getNode(i);
+ Schedule schedule = new Schedule();
+ schedule.setId(scheduleNode.getIntValue("number"));
+ schedule.setExpression(scheduleNode.getStringValue("expression"));
+
schedule.setScheduleDescription(getScheduleMessageByExpression(scheduleNode.getStringValue("expression")));
+ schedules.add(schedule);
+ }
+ return schedules;
+ }
+ public static String getScheduleMessageByExpression(String expression){
+ StringBuilder scheduleMessage = null;
+ ResourceBundle rb = ResourceBundle.getBundle("cmsc-calendar");
+ String[] expressions = expression.split("\\|");
+ String type;
+ if(expressions == null || expressions.length ==0) {
+ return null;
+ }
+ scheduleMessage = new StringBuilder();
+ type = expressions[0];
+ if(type.equals("1")) {
+ scheduleMessage.append(rb.getString("calendar.once")+",");
+ scheduleMessage.append(rb.getString("calendar.start.datetime"));
+ scheduleMessage.append(expressions[1]).append("
").append(expressions[2]).append(":").append(expressions[3]);
+ }
+ else if(type.equals("2")) {
+ scheduleMessage.append(rb.getString("calendar.daily")+",");
+ scheduleMessage.append(rb.getString("calendar.start.datetime"));
+ scheduleMessage.append(expressions[1]).append("
").append(expressions[2]).append(":").append(expressions[3]);
+ scheduleMessage.append("<br/>");
+ if(expressions[4].equals("0")) {
+
scheduleMessage.append(rb.getString("calendar.approach.interval.pre")).append(rb.getString("calendar.approach.interval.day"));
+ }
+ else if(expressions[4].equals("1")){
+
scheduleMessage.append(rb.getString("calendar.approach.interval.pre")).append(rb.getString("calendar.approach.weekday"));
+ }
+ else if(expressions[4].equals("2")) {
+
scheduleMessage.append(rb.getString("calendar.approach.interval.pre")).append("
").append(expressions[5]).append("
").append(rb.getString("calendar.approach.interval.day"));
+ }
+ }
+ else if(type.equals("3")) {
+
scheduleMessage.append(rb.getString("calendar.weekly")).append(",").append(rb.getString("calendar.start.datetime"));
+
scheduleMessage.append(expressions[1]).append(":").append(expressions[2]);
+
scheduleMessage.append("<br/>").append(rb.getString("calendar.approach.interval.pre")).append(expressions[3]).append(rb.getString("calendar.approach.interval.week"));
+
+ String tempWeek = "";
+ for (int i = 0; i < expressions[4].length(); i++) {
+ String month = expressions[4].substring(i, i + 1);
+ if (month.equals("1")) {
+ tempWeek += rb.getString("calendar.week.monday") + ",";
+ } else if (month.equals("2")) {
+ tempWeek += rb.getString("calendar.week.tuesday") + ",";
+ } else if (month.equals("3")) {
+ tempWeek += rb.getString("calendar.week.wednesday") + ",";
+ } else if (month.equals("4")) {
+ tempWeek += rb.getString("calendar.week.thursday") + ",";
+ } else if (month.equals("5")) {
+ tempWeek += rb.getString("calendar.week.friday") + ",";
+ } else if (month.equals("6")) {
+ tempWeek += rb.getString("calendar.week.saturday") + ",";
+ } else if (month.equals("7")) {
+ tempWeek += rb.getString("calendar.week.sunday") + ",";
+ }
+ }
+ if(StringUtils.isNotEmpty(tempWeek)){
+ if(tempWeek.endsWith(",")){
+ tempWeek = tempWeek.substring(0,tempWeek.length()-1) ;
+ }
+ }
+
scheduleMessage.append("<br/>").append(rb.getString("calendar.approach.interval.week")).append(":").append(tempWeek);
+ }
+ else {
+
scheduleMessage.append(rb.getString("calendar.monthly")).append(",").append(rb.getString("calendar.start.datetime")).append(expressions[1]).append(":").append(expressions[2]);
+ String months = "";
+ if(expressions[3].equals("0")) {
+
scheduleMessage.append("<br/>").append(rb.getString("calendar.approach.interval.pre")).append("
").append(expressions[4]).append("
").append(rb.getString("calendar.approach.interval.day"));
+ months = expressions[5];
+ }
+ else if(expressions[3].equals("1")) {
+
scheduleMessage.append("<br/>").append(rb.getString("calendar.week"));
+ if(expressions[4].equals("1")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.which.week.first")).append("
").append(rb.getString("calendar.approach.interval.week")).append(",");
+ }
+ else if (expressions[4].equals("2")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.which.week.second")).append("
").append(rb.getString("calendar.approach.interval.week")).append(",");
+ }
+ else if (expressions[4].equals("3")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.which.week.third")).append("
").append(rb.getString("calendar.approach.interval.week")).append(",");
+ }
+ else if (expressions[4].equals("4")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.which.week.forth")).append("
").append(rb.getString("calendar.approach.interval.week")).append(",");
+ }
+ else if (expressions[4].equals("5")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.which.week.last")).append("
").append(rb.getString("calendar.approach.interval.week")).append(",");
+ }
+
+ if(expressions[5].equals("1")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.monday")).append(".");
+ }
+ else if (expressions[5].equals("2")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.tuesday")).append(".");
+ }
+ else if (expressions[5].equals("3")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.wednesday")).append(".");
+ }
+ else if (expressions[5].equals("4")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.thursday")).append(".");
+ }
+ else if (expressions[5].equals("5")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.friday")).append(".");
+ }
+ else if (expressions[5].equals("6")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.saturday")).append(".");
+ }
+ else if (expressions[5].equals("7")) {
+ scheduleMessage.append("
").append(rb.getString("calendar.week.sunday")).append(".");
+ }
+ months = expressions[6];
+ }
+
+ String temp = "";
+ for(int i = 0 ; i < months.length();i++) {
+ String month = months.substring(i,i+1);
+ if(month.equals("0")) {
+ temp += rb.getString("calendar.month.january")+",";
+ }
+ else if(month.equals("1")) {
+ temp += rb.getString("calendar.month.february")+",";
+ }
+ else if(month.equals("2")) {
+ temp += rb.getString("calendar.month.march")+",";
+ }
+ else if(month.equals("3")) {
+ temp += rb.getString("calendar.month.april")+",";
+ }
+ else if(month.equals("4")) {
+ temp += rb.getString("calendar.month.may")+",";
+ }
+ else if(month.equals("5")) {
+ temp += rb.getString("calendar.month.june")+",";
+ }
+ else if(month.equals("6")) {
+ temp += rb.getString("calendar.month.july")+",";
+ }
+ else if(month.equals("7")) {
+ temp += rb.getString("calendar.month.august")+",";
+ }
+ else if(month.equals("8")) {
+ temp += rb.getString("calendar.month.september")+",";
+ }
+ else if(month.equals("9")) {
+ temp += rb.getString("calendar.month.october")+",";
+ }
+ else if(month.equals("a")) {
+ temp += rb.getString("calendar.month.november")+",";
+ }
+ else if(month.equals("b")) {
+ temp += rb.getString("calendar.month.december")+",";
+ }
+ }
+ if(StringUtils.isNotEmpty(temp)){
+ if(temp.endsWith(",")){
+ temp = temp.substring(0,temp.length()-1) ;
+ }
+ }
+
scheduleMessage.append("<br/>").append(rb.getString("calendar.month")).append("
").append(temp);
+ }
+ return scheduleMessage.toString();
+ }
+
+ public static void deleteSchedule(int scheduleId) {
+ Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+ Node scheduleNode = cloud.getNode(scheduleId);
+ scheduleNode.deleteRelations();
+ scheduleNode.delete();
+ }
+
+ public static void restoreSchedule(int scheduleId) {
+ Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+ Node scheduleNode = cloud.getNode(scheduleId);
+ Node newsletterNode = SearchUtil.findRelatedNode(scheduleNode,
"newsletter", "posrel");
+ if(newsletterNode != null) {
+ newsletterNode.setStringValue("schedule",
scheduleNode.getStringValue("expression"));
+ newsletterNode.setStringValue("scheduledescription",
getScheduleMessageByExpression(scheduleNode.getStringValue("expression")));
+ newsletterNode.commit();
+ }
+ scheduleNode.setLongValue("createdatetime", System.currentTimeMillis());
+ scheduleNode.commit();
+ }
}
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs