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

Modified Files:
        NewsLetterStatisticCAOImpl.java NewsletterCAOImpl.java 
        NewsletterSubscriptionCAOImpl.java 
Log Message:
CMSC-990,Redesign Newsletter: Subscribers & Terms tabs      improve terms 
management


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


Index: NewsLetterStatisticCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsLetterStatisticCAOImpl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- NewsLetterStatisticCAOImpl.java     18 Jul 2008 08:31:56 -0000      1.15
+++ NewsLetterStatisticCAOImpl.java     24 Jul 2008 11:45:43 -0000      1.16
@@ -15,6 +15,7 @@
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.bridge.util.SearchUtil;
 import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.storage.search.FieldValueConstraint;
 import org.mmbase.storage.search.Step;
 import org.mmbase.storage.search.StepField;
 import org.mmbase.storage.search.implementation.BasicCompositeConstraint;
@@ -212,12 +213,22 @@
        }
 
    public void logPubliction(int userId, int newsletterId, HANDLE handle) {
-      if (!mayLog(userId, newsletterId)) {
+      if (!mayLog(userId, newsletterId,handle)) {
          return;
       }
+      Node  logNode  = null;
+      if (handle.equals(HANDLE.BOUNCE)) {
+         logNode = getLogNode(userId, newsletterId);
+      }
+      if(logNode != null) {
+         logNode.setIntValue("bounches", logNode.getIntValue("bounches")+1);
+         logNode.setDateValue("logdate", new Date());
+         logNode.commit();
+      }
+      else {
       NodeManager logManager = cloud.getNodeManager("newsletterdailylog");
       //Node newsletter = cloud.getNode(newsletterId);
-      Node logNode = logManager.createNode();
+          logNode = logManager.createNode();
       logNode.setIntValue("newsletter", newsletterId);
       logNode.setIntValue("post", 0);
       logNode.setIntValue("bounches", 0);
@@ -242,31 +253,67 @@
          logNode.setIntValue("post", 1);
       }
       logNode.commit();
+      }
 
    }
 
-   private boolean mayLog(int userId, int newsletterId) {
+   private boolean mayLog(int userId, int newsletterId,HANDLE handle) {
+      
+      if(!handle.equals(HANDLE.ACTIVE) && !handle.equals(HANDLE.INACTIVE)) {
+         return true;
+      }
+
                boolean isLog = false;
                NodeManager logNodeManager = 
cloud.getNodeManager("newsletterdailylog");
                NodeQuery query = cloud.createNodeQuery();
                Step parameterStep = query.addStep(logNodeManager);
                query.setNodeStep(parameterStep);
                Queries.addSortOrders(query, "logdate", "DOWN");
-               query.setMaxNumber(2);
+               query.setMaxNumber(3);
                SearchUtil.addEqualConstraint(query, 
logNodeManager.getField("newsletter"), new Integer(newsletterId));
 
                SearchUtil.addEqualConstraint(query, 
logNodeManager.getField("userid"),new Integer(userId));
                NodeList logs = query.getList();
                if (logs.size() < 2) {
                        isLog = true;
-               } else if (logs.size() == 2) {
-                       isLog = !(DateUtils.isSameDay(new Date(), 
logs.getNode(0)
-                                       .getDateValue("logdate")) && 
DateUtils.isSameDay(
-                                       new Date(), 
logs.getNode(1).getDateValue("logdate")));
+               } 
+               else {
+                  int count = 0 ;
+                  for(int i = 0 ; i < logs.size() ; i++) {
+                     Node log = logs.getNode(i);
+                     if(DateUtils.isSameDay(new Date(), 
log.getDateValue("logdate")) && (log.getIntValue("subscribe") > 0 || 
log.getIntValue("unsubscribe") > 0)){
+                        count++;
+                     }
+                  }
+                  if(count == 3){
+                     isLog = false;
+                  }
                }
                return isLog;
        }
 
+   public Node getLogNode(int userId, int newsletterId){
+      log.info("-------------------logPubliction   -in 
process...getLogNode....:   ");
+      NodeManager logNodeManager = cloud.getNodeManager("newsletterdailylog");
+      Node logNode = null;
+      NodeQuery query = cloud.createNodeQuery();
+      Step parameterStep = query.addStep(logNodeManager);
+      query.setNodeStep(parameterStep);
+      Queries.addSortOrders(query, "logdate", "DOWN");
+      query.setMaxNumber(1);
+      SearchUtil.addEqualConstraint(query, 
logNodeManager.getField("newsletter"), new Integer(newsletterId));
+      SearchUtil.addEqualConstraint(query, 
logNodeManager.getField("userid"),new Integer(userId));
+      FieldValueConstraint liConstraint = 
query.createConstraint((query.getStepField(logNodeManager.getField("bounches"))),
+            FieldCompareConstraint.GREATER, new Integer(0));
+      SearchUtil.addConstraint(query, liConstraint);
+      NodeList logs = query.getList();
+      if(logs != null && logs.size() >0){
+         if(DateUtils.isSameDay(new Date(), 
logs.getNode(0).getDateValue("logdate"))){
+            logNode = logs.getNode(0);
+         }
+      }
+      return logNode;
+   }
        public int insertSumedLogs(List<StatisticResult> logsList) {
                int i = 0;
                NodeManager logManager = 
cloud.getNodeManager("newsletterdailylog");


Index: NewsletterCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsletterCAOImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- NewsletterCAOImpl.java      24 Jul 2008 09:04:16 -0000      1.17
+++ NewsletterCAOImpl.java      24 Jul 2008 11:45:43 -0000      1.18
@@ -1,7 +1,9 @@
 package com.finalist.newsletter.cao.impl;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 import net.sf.mmapps.commons.beans.MMBaseNodeMapper;
 
@@ -194,4 +196,27 @@
                // return new HashSet<Term>();
                // >>>>>>> 1.16
        }
+
+   public void processBouncesOfPublication(String publicationId, String userId,
+         String bounceContent) {
+      NodeManager bounceManager = cloud.getNodeManager("newsletterbounce"); 
+         Node node = bounceManager.createNode();
+         if(StringUtils.isNotEmpty(publicationId)){
+            node.setIntValue("newsletter", Integer.parseInt(publicationId));
+         }
+         if(StringUtils.isNotEmpty(userId)){
+            node.setIntValue("userid", Integer.parseInt(userId));
+         }
+         node.setStringValue("content",bounceContent);
+         node.setDateValue("bouncedate",new Date());
+         node.commit();
+      
+   }
+
+   public Set<Term> getNewsletterTermsByName(int newsltterId, String name,
+         int pagesize, int offset) {
+      // TODO Auto-generated method stub
+      return null;
+   }
+
 }


Index: NewsletterSubscriptionCAOImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/cao/impl/NewsletterSubscriptionCAOImpl.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- NewsletterSubscriptionCAOImpl.java  24 Jul 2008 09:04:16 -0000      1.24
+++ NewsletterSubscriptionCAOImpl.java  24 Jul 2008 11:45:43 -0000      1.25
@@ -338,8 +338,13 @@
        public void updateLastBounce(int subscriptionId) {
                // todo test.
                Node subscription = getSubscriptionNodeById(subscriptionId);
-               subscription.setIntValue("count_bounces", 
subscription.getIntValue("count_bounces"));
-               subscription.setDateValue("last_bounce", new 
Date(System.currentTimeMillis()));
+      if(subscription.getIntValue("count_bounces") >0) {
+         
subscription.setIntValue("count_bounces",subscription.getIntValue("count_bounces")+1);
+      }
+      else {
+         subscription.setIntValue("count_bounces",1);
+      }
+      subscription.setDateValue("last_bounce",new 
Date(System.currentTimeMillis()));
                subscription.commit();
        }
 
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to