[jboss-svn-commits] JBL Code SVN: r35666 - in labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src: main/java/org/jboss/community/sbs/plugin/reports/monthly and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 22 08:03:47 EDT 2010


Author: lkrzyzanek
Date: 2010-10-22 08:03:46 -0400 (Fri, 22 Oct 2010)
New Revision: 35666

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/aggregated-report-definition.xml
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsActionTest.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbRedHatUsersDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbReportDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/RedHatUsersDAO.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportBean.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportDAO.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/MonthlyReportManagerImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/valuesource/SBSValueSource.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsAction.java
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/plugin/resources/templates/admin/monthly-reports.ftl
   labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/plugin_i18n.properties
Log:
Implementation of generating report in separate thread.
Improved UI

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbRedHatUsersDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbRedHatUsersDAOImpl.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbRedHatUsersDAOImpl.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -41,6 +41,8 @@
 
   private static final String SELECT_REDHAT_USERS_BY_DATE = "SELECT userID FROM reportsRedHatUsers WHERE created = ?";
 
+  private static final String SELECT_REDHAT_USERS_SNAPSHOTS = "SELECT DISTINCT created FROM reportsRedHatUsers ORDER BY created DESC";
+  
   private static final String SELECT_REDHAT_USERS_COUNTS = "SELECT created, count(userID) FROM reportsRedHatUsers GROUP BY created ORDER BY created DESC";
 
   private static final String CREATE_SNAPSHOT = "INSERT reportsRedHatUsers SELECT DISTINCT u.userId, ? "
@@ -59,6 +61,11 @@
     return this.getSimpleJdbcTemplate().query(SELECT_REDHAT_USERS_BY_DATE, longMapper, date.getTime());
   }
 
+  @Override
+  public List<Long> getSnapshots() {
+    return this.getSimpleJdbcTemplate().query(SELECT_REDHAT_USERS_SNAPSHOTS, longMapper);
+  }
+  
   private SnapshotsCountMapper snapshotsCountMapper = new SnapshotsCountMapper();
 
   @Override

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbReportDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbReportDAOImpl.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/DbReportDAOImpl.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -21,13 +21,17 @@
  */
 package org.jboss.community.sbs.plugin.reports.dao;
 
+import java.io.InputStream;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
 
 import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.jivesoftware.base.database.dao.JiveJdbcDaoSupport;
+import com.jivesoftware.base.database.dao.JiveJdbcOperationsTemplate;
 import com.jivesoftware.base.database.sequence.SequenceManager;
 
 /**
@@ -46,14 +50,39 @@
   private static final String INSERT_REPORT = "INSERT INTO reportsMonthly (id, fromDate, toDate, redHatUsersSnapshot, status, statusMessage) "
       + "VALUES (?, ?, ?, ?, ?, ?)";
 
+  private static final String UPDATE_REPORT_STATUS = "UPDATE reportsMonthly SET status = ?, statusMessage = ? WHERE id = ?";
+
+  private static final String UPDATE_REPORT_RESULT = "UPDATE reportsMonthly SET reportData = ?, status = ?, statusMessage = ? WHERE id = ?";
+
   @Override
-  public void createReport(ReportBean bean) {
+  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
+  public ReportBean createReport(ReportBean bean) {
     bean.setId(SequenceManager.nextID(DB_REPORT_SEQ));
 
     getSimpleJdbcTemplate().update(INSERT_REPORT, bean.getId(), bean.getFrom(), bean.getTo(),
         bean.getRedHatUsersSnapshot(), bean.getStatus(), bean.getStatusMessage());
+
+    return bean;
   }
 
+  @Override
+  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
+  public void updateReportStatus(ReportBean report) {
+    String message = report.getStatusMessage();
+    if (message != null && message.length() > 200) {
+      message = message.substring(0, 200);
+    }
+    getSimpleJdbcTemplate().update(UPDATE_REPORT_STATUS, report.getStatus(), message, report.getId());
+  }
+
+  @Override
+  @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
+  public void saveResultAndStatus(ReportBean report, InputStream is, int contentLength) {
+    JiveJdbcOperationsTemplate template = new JiveJdbcOperationsTemplate(getSimpleJdbcTemplate());
+    template.updateBlobAsStream(UPDATE_REPORT_RESULT, contentLength, is, report.getStatus(), report.getStatusMessage(),
+        report.getId());
+  }
+
   private final ReportBeanMapper reportBeanMapper = new ReportBeanMapper();
 
   @Override

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/RedHatUsersDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/RedHatUsersDAO.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/RedHatUsersDAO.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -52,4 +52,11 @@
    */
   public Map<Long, Long> getSnapshotsCount();
 
+  /**
+   * Get snapshots
+   * 
+   * @return
+   */
+  public List<Long> getSnapshots();
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportBean.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportBean.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -28,6 +28,20 @@
  */
 public class ReportBean {
 
+  public enum STATUS {
+    CREATED(0), STARTED(1), FINISHED(10), ERROR(11);
+
+    int code;
+
+    STATUS(int code) {
+      this.code = code;
+    }
+
+    public int intValue() {
+      return code;
+    }
+  }
+
   /**
    * Internal ID
    */
@@ -95,7 +109,6 @@
     this.redHatUsersSnapshot = redHatUsersSnapshot;
   }
 
-
   public int getStatus() {
     return status;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportDAO.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/dao/ReportDAO.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -21,6 +21,7 @@
  */
 package org.jboss.community.sbs.plugin.reports.dao;
 
+import java.io.InputStream;
 import java.util.List;
 
 /**
@@ -33,9 +34,25 @@
   /**
    * Insert new report
    */
-  public void createReport(ReportBean report);
+  public ReportBean createReport(ReportBean report);
 
   /**
+   * Update report
+   * 
+   * @param report
+   */
+  public void updateReportStatus(ReportBean report);
+
+  /**
+   * Save report result and update status
+   * 
+   * @param report
+   * @param is
+   * @param contentLength
+   */
+  public void saveResultAndStatus(ReportBean report, InputStream is, int contentLength);
+
+  /**
    * Get list of all reports
    * 
    * @return

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/MonthlyReportManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/MonthlyReportManagerImpl.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/MonthlyReportManagerImpl.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -21,10 +21,13 @@
  */
 package org.jboss.community.sbs.plugin.reports.monthly;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Date;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
+import org.hsqldb.lib.StringInputStream;
 import org.jboss.community.sbs.plugin.reports.dao.ReportBean;
 import org.jboss.community.sbs.plugin.reports.dao.ReportDAO;
 
@@ -44,22 +47,90 @@
 
   @Override
   public void generateReport(Date from, Date to, Date redHatUsersSnapshot) {
-    log.info("Generate report (" + from + " - " + to + "). RH UsersSnapshot: " + redHatUsersSnapshot);
+    if (log.isInfoEnabled()) {
+      log.info("Generate report (" + from + " - " + to + "). RH UsersSnapshot: " + redHatUsersSnapshot);
+    }
 
     ReportBean report = new ReportBean();
     report.setFrom(from.getTime());
     report.setTo(to.getTime());
     report.setRedHatUsersSnapshot(redHatUsersSnapshot.getTime());
     // create Status enum
-    report.setStatus(0);
+    report.setStatus(ReportBean.STATUS.CREATED.intValue());
     report.setStatusMessage("Pending in queue");
 
-    reportDAO.createReport(report);
+    ReportBean dbBean = reportDAO.createReport(report);
 
-    // TODO implement new thread and start report generation.
+    ReportGeneratorThread generatorThread = new ReportGeneratorThread(dbBean);
+    generatorThread.start();
+  }
 
+  public void reportFinished(ReportBean report, String result) {
+    report.setStatus(ReportBean.STATUS.FINISHED.intValue());
+    report.setStatusMessage(null);
+
+    InputStream is = new StringInputStream(result);
+
+    reportDAO.saveResultAndStatus(report, is, result.length());
+
+    try {
+      is.close();
+    } catch (IOException e) {
+      log.error("Cannot close IS", e);
+    }
+
+    if (log.isInfoEnabled()) {
+      log.info("Report finished, reportID:" + report.getId());
+    }
   }
 
+  public void reportFailed(ReportBean report, Exception e) {
+    log.error(e);
+    report.setStatus(ReportBean.STATUS.ERROR.intValue());
+    report.setStatusMessage(e.getMessage());
+    reportDAO.updateReportStatus(report);
+  }
+
+  public void reportStarted(ReportBean report) {
+    report.setStatus(ReportBean.STATUS.STARTED.intValue());
+    report.setStatusMessage(null);
+    reportDAO.updateReportStatus(report);
+  }
+
+  public class ReportGeneratorThread extends Thread {
+
+    private ReportBean report;
+
+    public ReportGeneratorThread(ReportBean report) {
+      super("ReportGeneratorThread-reportID: " + report.getId());
+      this.report = report;
+    }
+
+    @Override
+    public void run() {
+      InputStream configStream = null;
+      try {
+        reportStarted(report);
+        // TODO load configuration
+        configStream = MonthlyReportManagerImpl.class.getResourceAsStream("/aggregated-report-definition.xml");
+        String result = reportGenerator.generateReport(configStream, new Date(report.getFrom()),
+            new Date(report.getTo()), new Date(report.getRedHatUsersSnapshot()), new JiveSystemConfigProvider());
+        configStream.close();
+        reportFinished(report, result);
+      } catch (Exception e) {
+        if (configStream != null) {
+          try {
+            configStream.close();
+          } catch (IOException e1) {
+            log.error(e1);
+          }
+        }
+        reportFailed(report, e);
+
+      }
+    }
+  }
+
   public void setReportDAO(ReportDAO reportDAO) {
     this.reportDAO = reportDAO;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/valuesource/SBSValueSource.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/valuesource/SBSValueSource.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/monthly/valuesource/SBSValueSource.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -27,7 +27,8 @@
   protected Date rhUsersSnapshotTimestamp;
 
   /**
-   * Values loaded from DB by bulk SQL queries are stored here for subsequent {@link #getValues(SBSValueKey)} calls.
+   * Values loaded from DB by bulk SQL queries are stored here for subsequent
+   * {@link #getValues(SBSValueKey)} calls.
    */
   protected Map<SBSValueType, Map<Long, Long>> valueCache = new HashMap<SBSValueType, Map<Long, Long>>();
 
@@ -75,45 +76,49 @@
     // TODO LIBOR define correct SQL statements!
 
     // WIKI related values
-    sqlStatements.put(SBSValueType.WIKI_NEW_ARTICLE_RH,
-        "select spadeid, value from ... where rhUsersSnapshotTimestamp=? and date > ? and date < ? and ...");
+    sqlStatements.put(SBSValueType.WIKI_NEW_ARTICLE_RH, "SELECT d.containerId, count(d.internalDocID)"
+        + " FROM jiveDocument d"
+        + " WHERE d.userID IN (SELECT userId from reportsRedHatUsers where created = ?)"
+        + " and d.creationDate > ? and d.creationDate < ?" + " group by d.containerId");
+
     sqlStatements.put(SBSValueType.WIKI_NEW_ARTICLE_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     sqlStatements.put(SBSValueType.WIKI_EDIT_ARTICLE_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.WIKI_EDIT_ARTICLE_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     sqlStatements.put(SBSValueType.WIKI_COMMENT_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.WIKI_COMMENT_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     // forum related values
     sqlStatements.put(SBSValueType.FORUM_QUESTION_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.FORUM_QUESTION_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     sqlStatements.put(SBSValueType.FORUM_ANSWER_HELPFUL_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.FORUM_ANSWER_CORRECT_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.FORUM_ANSWER_HELPFUL_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.FORUM_ANSWER_CORRECT_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     sqlStatements.put(SBSValueType.FORUM_THREAD_RH,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements.put(SBSValueType.FORUM_THREAD_CM,
-        "select spadeid, value from ... where date > ? and date < ? and ...");
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
     sqlStatements
-        .put(SBSValueType.FORUM_REPLY_RH, "select spadeid, value from ... where date > ? and date < ? and ...");
+        .put(SBSValueType.FORUM_REPLY_RH, "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
     sqlStatements
-        .put(SBSValueType.FORUM_REPLY_CM, "select spadeid, value from ... where date > ? and date < ? and ...");
+.put(SBSValueType.FORUM_REPLY_CM,
+        "select 1, 1 from reportsRedHatUsers where created = ? and created = ? and created = ?");
 
   }
 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsAction.java	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsAction.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -23,10 +23,12 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
+import org.jboss.community.sbs.plugin.reports.dao.RedHatUsersDAO;
 import org.jboss.community.sbs.plugin.reports.dao.ReportBean;
 import org.jboss.community.sbs.plugin.reports.dao.ReportDAO;
 import org.jboss.community.sbs.plugin.reports.monthly.MonthlyReportManager;
@@ -51,6 +53,8 @@
    */
   private List<ReportBean> reports;
 
+  private List<Long> snapshots;
+
   /**
    * Report range - from
    */
@@ -64,14 +68,17 @@
   /**
    * RedHat Users Snapshot
    */
-  private String redHatUsersSnapshot;
+  private Long redHatUsersSnapshot;
 
   private ReportDAO reportDAO;
 
+  private RedHatUsersDAO redHatUsersDAO;
+
   private MonthlyReportManager monthlyReportManager;
 
   public void prepare() {
     reports = reportDAO.getAllReports();
+    snapshots = redHatUsersDAO.getSnapshots();
   }
 
   private void resetForm() {
@@ -88,7 +95,7 @@
     if (StringUtils.trimToNull(to) == null) {
       addActionError(getText("plugin.reports.admin.monthlyrep.error.required", new String[] { "To" }));
     }
-    if (StringUtils.trimToNull(redHatUsersSnapshot) == null) {
+    if (redHatUsersSnapshot == null) {
       addActionError(getText("plugin.reports.admin.monthlyrep.error.required",
           new String[] { "Red Hat Users Snapshot" }));
     }
@@ -98,23 +105,22 @@
   public String execute() {
     Date fromDate = null, toDate = null, redHatUsersSnapshotDate = null;
     SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN);
-    formatter.setLenient(true);
+    formatter.setLenient(false);
 
     try {
       fromDate = formatter.parse(from);
+      fromDate = setTime(fromDate, 0, 0, 0);
     } catch (ParseException e) {
       addActionError(getText("plugin.reports.admin.monthlyrep.error.dateFormat", new String[] { DATE_PATTERN }));
     }
     try {
       toDate = formatter.parse(to);
+      toDate = setTime(toDate, 24, 59, 59);
     } catch (ParseException e) {
       addActionError(getText("plugin.reports.admin.monthlyrep.error.dateFormat", new String[] { DATE_PATTERN }));
     }
-    try {
-      redHatUsersSnapshotDate = formatter.parse(redHatUsersSnapshot);
-    } catch (ParseException e) {
-      addActionError(getText("plugin.reports.admin.monthlyrep.error.dateFormat", new String[] { DATE_PATTERN }));
-    }
+    redHatUsersSnapshotDate = new Date(redHatUsersSnapshot);
+
     if (hasActionErrors()) {
       return INPUT;
     }
@@ -128,6 +134,15 @@
     return SUCCESS;
   }
 
+  public static Date setTime(Date d, int hour, int minute, int sec) {
+    Calendar c = Calendar.getInstance();
+    c.setTime(d);
+    c.set(Calendar.HOUR_OF_DAY, hour);
+    c.set(Calendar.MINUTE, minute);
+    c.set(Calendar.SECOND, sec);
+    return c.getTime();
+  }
+
   public void setReportDAO(ReportDAO reportDAO) {
     this.reportDAO = reportDAO;
   }
@@ -156,12 +171,20 @@
     this.to = to;
   }
 
-  public String getRedHatUsersSnapshot() {
+  public Long getRedHatUsersSnapshot() {
     return redHatUsersSnapshot;
   }
 
-  public void setRedHatUsersSnapshot(String redHatUsersSnapshot) {
+  public void setRedHatUsersSnapshot(Long redHatUsersSnapshot) {
     this.redHatUsersSnapshot = redHatUsersSnapshot;
   }
 
+  public List<Long> getSnapshots() {
+    return snapshots;
+  }
+
+  public void setRedHatUsersDAO(RedHatUsersDAO redHatUsersDAO) {
+    this.redHatUsersDAO = redHatUsersDAO;
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/plugin/resources/templates/admin/monthly-reports.ftl
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/plugin/resources/templates/admin/monthly-reports.ftl	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/plugin/resources/templates/admin/monthly-reports.ftl	2010-10-22 12:03:46 UTC (rev 35666)
@@ -10,12 +10,19 @@
 
     <table>
     <@s.form theme="simple" action="create-monthly-report">
-      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.from"/><span>*</span>:</td>
+      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.from"/> <span>*</span>:</td>
           <td><@s.textfield name="from" required="true"/></td></tr>
-      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.to"/><span>*</span>:</td>
+      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.to"/> <span>*</span>:</td>
           <td><@s.textfield name="to" required="true"/></td></tr>
-      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.snapshot"/><span>*</span>:</td>
-          <td><@s.textfield name="redHatUsersSnapshot" required="true"/></td></tr>
+      <tr><td><@s.text name="plugin.reports.admin.monthlyrep.snapshot"/> <span>*</span>:</td>
+          <td>
+            <select name="redHatUsersSnapshot">
+            <#list snapshots as s>
+              <option value="${s}">${statics['org.jboss.community.sbs.plugin.reports.struts.AdminRHUsersSnapshotAction'].convertToDate(s)?datetime}</option>
+            </#list>
+            </select>
+          </td>
+      </tr>
       <tr><td></td><td><@s.submit value="${action.getText('plugin.reports.admin.monthlyrep.createreport')}"/>
     </@s.form>
     </table>
@@ -36,12 +43,12 @@
         <tbody>
         <#list reports as report>
         <tr>
-          <td>${report.from}</td>
-          <td>${report.to}</td>
-          <td>${report.redHatUsersSnapshot}</td>
+          <td>${statics['org.jboss.community.sbs.plugin.reports.struts.AdminRHUsersSnapshotAction'].convertToDate(report.from)?datetime}</td>
+          <td>${statics['org.jboss.community.sbs.plugin.reports.struts.AdminRHUsersSnapshotAction'].convertToDate(report.to)?datetime}</td>
+          <td>${statics['org.jboss.community.sbs.plugin.reports.struts.AdminRHUsersSnapshotAction'].convertToDate(report.redHatUsersSnapshot)?datetime}</td>
           <td>${report.configurationId}</td>
-          <td>${report.status}</td>
-          <td>${report.statusMessage}</td>
+          <td><@s.text name="plugin.reports.admin.monthlyrep.reports.status.#{report.status}"/> <#if report.statusMessage??><br/>${report.statusMessage}</#if></td>
+          <td><#if report.status == 10><a href="/admin/monthly-report-download.jspa?reportID=${report.id}"><@s.text name="plugin.reports.admin.monthlyrep.reports.download"/></a></#if></td>
         </tr>
         </#list>
         </tbody>

Added: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/aggregated-report-definition.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/aggregated-report-definition.xml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/aggregated-report-definition.xml	2010-10-22 12:03:46 UTC (rev 35666)
@@ -0,0 +1,30 @@
+<projects>
+  <project name="RichFaces">
+    <sbs>
+      <user>
+        <space>2024</space>
+      </user>
+      <dev>
+        <space>2025</space>
+        <space>2190</space>
+      </dev>
+    </sbs>
+  </project>
+  <project name="Hibernate">
+    <sbs>
+      <user>
+        <space>2206</space>
+        <space>2210</space>
+        <space>2211</space>
+        <space>2212</space>
+        <space>2214</space>
+      </user>
+      <dev>
+        <space>2208</space>
+        <space>2224</space>
+        <space>2209</space>
+        <space>2216</space>
+      </dev>
+    </sbs>
+  </project>
+</projects> 
\ No newline at end of file


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/aggregated-report-definition.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/plugin_i18n.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/plugin_i18n.properties	2010-10-22 09:24:46 UTC (rev 35665)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/main/resources/plugin_i18n.properties	2010-10-22 12:03:46 UTC (rev 35666)
@@ -35,3 +35,8 @@
 plugin.reports.admin.monthlyrep.reports.column.version=Version
 plugin.reports.admin.monthlyrep.reports.column.status=Status
 plugin.reports.admin.monthlyrep.reports.column.action=Action
+plugin.reports.admin.monthlyrep.reports.download=Download
+plugin.reports.admin.monthlyrep.reports.status.0=Created
+plugin.reports.admin.monthlyrep.reports.status.1=Report is creating
+plugin.reports.admin.monthlyrep.reports.status.10=Finished
+plugin.reports.admin.monthlyrep.reports.status.11=Error
\ No newline at end of file

Added: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsActionTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsActionTest.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsActionTest.java	2010-10-22 12:03:46 UTC (rev 35666)
@@ -0,0 +1,59 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.community.sbs.plugin.reports.struts;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import org.junit.Test;
+
+/**
+ * Test for {@link MonthlyReportsAction}
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class MonthlyReportsActionTest {
+
+  /**
+   * Test method for
+   * {@link org.jboss.community.sbs.plugin.reports.struts.MonthlyReportsAction#setTime(java.util.Date, int, int, int)}
+   * .
+   */
+  @Test
+  public void testSetTime() {
+    Calendar c = Calendar.getInstance();
+    c.set(2010, 10, 22, 15, 50, 35);
+    Date date = c.getTime();
+
+    c.set(2010, 10, 22, 0, 0, 0);
+    Date dateModified = c.getTime();
+
+    assertEquals(dateModified, MonthlyReportsAction.setTime(date, 0, 0, 0));
+
+    c.set(2010, 10, 22, 24, 59, 59);
+    dateModified = c.getTime();
+    assertEquals(dateModified, MonthlyReportsAction.setTime(date, 24, 59, 59));
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs/reports/trunk/src/test/java/org/jboss/community/sbs/plugin/reports/struts/MonthlyReportsActionTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the jboss-svn-commits mailing list