SummaryModel.java
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 4k
Category:

Java Develop

Development Platform:

Java

  1. /*
  2.  * Copyright (c) JForum Team
  3.  * All rights reserved.
  4.  * 
  5.  * Redistribution and use in source and binary forms, 
  6.  * with or without modification, are permitted provided 
  7.  * that the following conditions are met:
  8.  * 
  9.  * 1) Redistributions of source code must retain the above 
  10.  * copyright notice, this list of conditions and the 
  11.  * following  disclaimer.
  12.  * 2)  Redistributions in binary form must reproduce the 
  13.  * above copyright notice, this list of conditions and 
  14.  * the following disclaimer in the documentation and/or 
  15.  * other materials provided with the distribution.
  16.  * 3) Neither the name of "Rafael Steil" nor 
  17.  * the names of its contributors may be used to endorse 
  18.  * or promote products derived from this software without 
  19.  * specific prior written permission.
  20.  * 
  21.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT 
  22.  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
  23.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
  24.  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  25.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  26.  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
  27.  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  29.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  30.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
  31.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  32.  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  33.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
  34.  * IN CONTRACT, STRICT LIABILITY, OR TORT 
  35.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  36.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  37.  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
  38.  * 
  39.  * Class created on Jul 15, 2005
  40.  * The JForum Project
  41.  * http://www.jforum.net
  42.  */
  43. package net.jforum.summary;
  44. import java.util.ArrayList;
  45. import java.util.Calendar;
  46. import java.util.Date;
  47. import java.util.Iterator;
  48. import java.util.List;
  49. import net.jforum.dao.DataAccessDriver;
  50. import net.jforum.dao.SummaryDAO;
  51. import net.jforum.entities.User;
  52. import net.jforum.util.mail.Spammer;
  53. import net.jforum.util.preferences.ConfigKeys;
  54. import net.jforum.util.preferences.SystemGlobals;
  55. import net.jforum.view.forum.common.ViewCommon;
  56. import org.apache.log4j.Logger;
  57. import freemarker.template.SimpleHash;
  58. /**
  59.  * Manage the Summary sends.
  60.  * 
  61.  * @see net.jforum.summary.SummaryJob
  62.  * @see net.jforum.summary.SummaryScheduler
  63.  * 
  64.  * @author Franklin S. Dattein (<a href="mailto:franklin@hp.com">franklin@hp.com</a>)
  65.  * @version $Id: SummaryModel.java,v 1.11 2007/09/08 02:36:36 andowson Exp $
  66.  */
  67. public class SummaryModel extends Spammer
  68. {
  69. private SummaryDAO dao;
  70. private static Logger logger = Logger.getLogger(SummaryModel.class);
  71. public SummaryModel()
  72. {
  73. this.dao = DataAccessDriver.getInstance().newSummaryDAO();
  74. }
  75. public void sendPostsSummary(List recipients)
  76. {
  77. logger.info("Sending Weekly summary...");
  78. // Gets a Date seven days before now
  79. int daysBefore = Integer.parseInt(SystemGlobals.getValue(ConfigKeys.SUMMARY_DAYS_BEFORE));
  80. // New date "X" days before now, where "X" is the number set on the variable daysBefore
  81. long dateBefore = Calendar.getInstance().getTimeInMillis() - (daysBefore * 1000 * 60 * 60 * 24);
  82. List posts = listPosts(new Date(dateBefore), new Date());
  83. String forumLink = ViewCommon.getForumLink();
  84. SimpleHash params = new SimpleHash();
  85. params.put("posts", posts);
  86. params.put("url", forumLink);
  87. params.put("extension", SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION));
  88. String subject = SystemGlobals.getValue(ConfigKeys.MAIL_SUMMARY_SUBJECT);
  89. this.setUsers(this.recipientsAsUsers(recipients));
  90. this.setTemplateParams(params);
  91. this.prepareMessage(subject, SystemGlobals.getValue(ConfigKeys.MAIL_SUMMARY_FILE));
  92. super.dispatchMessages();
  93. }
  94. private List recipientsAsUsers(List recipients)
  95. {
  96. List l = new ArrayList();
  97. for (Iterator iter = recipients.iterator(); iter.hasNext(); ) {
  98. String email = (String)iter.next();
  99. User u = new User();
  100. u.setEmail(email);
  101. l.add(u);
  102. }
  103. return l;
  104. }
  105. /**
  106.  * List all recipients able to receive posts summaries.
  107.  * 
  108.  * @return List of users
  109.  */
  110. public List listRecipients()
  111. {
  112. return this.dao.listRecipients();
  113. }
  114. /**
  115.  * List last posts of a period like a week, day or month.
  116.  * 
  117.  * @param firstDate First date of a period.
  118.  * @param lastDate Last date of a period.
  119.  * @return List of Posts
  120.  */
  121. public List listPosts(Date firstDate, Date lastDate)
  122. {
  123. return this.dao.selectLastPosts(firstDate, lastDate);
  124. }
  125. }