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