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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs