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

Modified Files:
        NewsLetterStatisticCAOImpl.java 
Log Message:
CMSC-725 ,Newsletter Statistic


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-725


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.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- NewsLetterStatisticCAOImpl.java     8 May 2008 08:40:56 -0000       1.8
+++ NewsLetterStatisticCAOImpl.java     9 May 2008 07:08:50 -0000       1.9
@@ -13,10 +13,14 @@
 import org.mmbase.storage.search.implementation.BasicCompositeConstraint;
 import 
org.mmbase.storage.search.implementation.BasicFieldValueBetweenConstraint;
 import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
+import static com.finalist.newsletter.domain.Subscription.STATUS;
 
 import com.finalist.newsletter.cao.NewsLetterStatisticCAO;
 import com.finalist.newsletter.cao.util.StatisticUtil;
 import com.finalist.newsletter.domain.StatisticResult;
+import org.apache.commons.lang.time.DateUtils;
+import org.mmbase.bridge.util.Queries;
+import org.mmbase.bridge.util.SearchUtil;
 
 public class NewsLetterStatisticCAOImpl implements NewsLetterStatisticCAO {
 
@@ -112,11 +116,47 @@
                return util.convertFromNodeList((NodeList) list);
        }
        
-        public void logPubliction(int newsletterId, int post) {
+       public void logPubliction(int userId,int newsletterId, STATUS status) {
+      if(!mayLog(userId,newsletterId)) {
+         return;
+      }
       NodeManager logManager = cloud.getNodeManager("newsletterdailylog");
       Node logNode = logManager.createNode();
       logNode.setIntValue("newsletter",newsletterId);
-      logNode.setIntValue("post",post);
+      logNode.setIntValue("post",0);
+      logNode.setIntValue("bounches",0);
+      logNode.setIntValue("subscribe",0);
+      logNode.setIntValue("unsubscribe",0);
+      logNode.setIntValue("removed",0);
+      logNode.setIntValue("userid",userId);
+      logNode.setDateValue("logdate",new Date());
+      if(status.equals(STATUS.ACTIVE)) {
+         logNode.setIntValue("subscribe",1);
+      }
+      else if(status.equals(STATUS.INACTIVE)) {
+         logNode.setIntValue("unsubscribe",1);
+      }
       logNode.commit();
    }
+
+        private boolean mayLog(int userId,int newsletterId) {
+           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);
+           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")));
+           }
+           return isLog;
+        }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to