[prev in list] [next in list] [prev in thread] [next in thread] 

List:       opennms-cvs
Subject:    [opennms-cvs] SF.net SVN: opennms:[15308]
From:       jsartin () users ! sourceforge ! net
Date:       2009-11-30 21:04:19
Message-ID: E1NFDPv-0005tB-IA () 3kljzd1 ! ch3 ! sourceforge ! com
[Download RAW message or body]

Revision: 15308
          http://opennms.svn.sourceforge.net/opennms/?rev=15308&view=rev
Author:   jsartin
Date:     2009-11-30 21:04:18 +0000 (Mon, 30 Nov 2009)

Log Message:
-----------
Make report parameters more generic. reportCategory is now a special case of \
string-parm. Have dates accept relative defaults. Clean up unused legacy report \
beans. Make value of report-parms a consistent field name.

Modified Paths:
--------------
    opennms/branches/feature-reportd/opennms-base-assembly/src/main/filtered/etc/database-reports.xml
  opennms/branches/feature-reportd/opennms-config/src/main/castor/database-reports.xsd
  opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/DatabaseReportConfigDao.java
  opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDao.java
  opennms/branches/feature-reportd/opennms-dao/src/test/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDaoTest.java
  opennms/branches/feature-reportd/opennms-dao/src/test/resources/database-reports-testdata.xml
  opennms/branches/feature-reportd/opennms-reporting/src/main/resources/META-INF/opennms/applicationContext-reporting.xml
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/command/DatabaseReportCriteriaCommand.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportCriteriaService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportCriteriaService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportListService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzDatabaseReportService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml
  opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/databaseReportBuilder-flow.xml
  opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/reportParameters.jsp
  opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/reviewReport.jsp
  opennms/branches/feature-reportd/opennms-webapp/src/test/java/org/opennms/web/svclayer/DefaultDatabaseReportCriteriaServiceTest.java


Added Paths:
-----------
    opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/BatchReportService.java
  opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsBatchDatabaseReportService.java
  opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/ReportValidationService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/BatchReportJob.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportCriteria.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportDateParm.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportParm.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportStringParm.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzSchedulerService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/TriggerDescription.java


Removed Paths:
-------------
    opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCategoryParm.java
  opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCriteria.java
  opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportDateParm.java
  opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportParm.java
  opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/DatabaseReportService.java
  opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsDatabaseReportService.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/ReportJob.java
  opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportService.java


Modified: opennms/branches/feature-reportd/opennms-base-assembly/src/main/filtered/etc/database-reports.xml
 ===================================================================
--- opennms/branches/feature-reportd/opennms-base-assembly/src/main/filtered/etc/database-reports.xml	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-base-assembly/src/main/filtered/etc/database-reports.xml	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -3,16 +3,22 @@
 	xmlns:this="http://xmlns.opennms.org/xsd/config/opennms-database-reports"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://xmlns.opennms.org/xsd/config/opennms-database-reports">
-	<report report-name="defaultCalendarReport" display-name="default calendar report"
-		engine-name="opennms" description="standard opennms report in calendar format">
-		<date name="endDate" display-name="end date" default-value="TODAY" />
-		<report-category name="reportCategory" display-name="report category"
-			default-value="networkInterfaces" />
+	<report id="defaultCalendarReport" display-name="default calendar report"
+		report-service="onmsBatchDatabaseReportService" description="standard opennms \
report in calendar format"> +		<date name="endDate" display-name="end date"/>
+		<string-parm name="reportCategory" display-name="report category" \
input-type="reportCategorySelector" /> +		<date-offset name="endDate" \
display-name="end date"> +			<default-interval>day</default-interval>
+			<default-count>1</default-count>
+		</date-offset>
 	</report>
-	<report report-name="defaultClassicReport" display-name="default classic report"
-		engine-name="opennms" description="standard opennms report in tabular format">
-		<date name="endDate" display-name="end date" default-value="TODAY" />
-		<report-category name="reportCategory" display-name="report category"
-			default-value="networkInterfaces" />
+	<report id="defaultClassicReport" display-name="default classic report"
+		report-service="onmsBatchDatabaseReportService" description="standard opennms \
report in tabular format"> +		<date name="endDate" display-name="end date"/>
+		<string-parm name="reportCategory" display-name="report category" \
input-type="reportCategorySelector" /> +		<date-offset name="endDate" \
display-name="end date"> +			<default-interval>day</default-interval>
+			<default-count>1</default-count>
+		</date-offset>
 	</report>
 </database-reports>
\ No newline at end of file

Modified: opennms/branches/feature-reportd/opennms-config/src/main/castor/database-reports.xsd
 ===================================================================
--- opennms/branches/feature-reportd/opennms-config/src/main/castor/database-reports.xsd	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-config/src/main/castor/database-reports.xsd	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -24,14 +24,12 @@
 	<element name="report">
 		<complexType>
 			<sequence>
-				<element name="date" maxOccurs="unbounded" minOccurs="0"
-					type="this:report-parm" />
-				<element name="report-category" maxOccurs="unbounded" minOccurs="0"
-					type="this:report-parm" />
-				<element name="date-offset" maxOccurs="unbounded" minOccurs="0"
-					type="this:date-offset-parm" />				
+				<element name="string-parm" maxOccurs="unbounded" minOccurs="0"
+					type="this:string-parm" />
+				<element name="date-parm" maxOccurs="unbounded" minOccurs="0"
+					type="this:date-parm" />
 			</sequence>
-			<attribute name="report-name" type="string" use="required">
+			<attribute name="id" type="string" use="required">
 				<annotation>
 					<documentation>the name of this report as defined in engine
 						configuration</documentation>
@@ -43,7 +41,7 @@
 					</documentation>
 				</annotation>
 			</attribute>
-			<attribute name="engine-name" type="string" use="required">
+			<attribute name="report-service" type="string" use="required">
 				<annotation>
 					<documentation>the name of the engine to use to process and
 						render this report</documentation>
@@ -56,69 +54,99 @@
 			</attribute>
 		</complexType>
 	</element>
-	
-	<complexType name="date-offset-parm">
-		
+
+	<complexType name="date-parm">
+
 		<annotation>
 			<documentation>
-				An offset period used as a base to determine a real date when running the report
+				An offset period used as a base to determine a real
+				date when running the report
 			</documentation>
 		</annotation>
-		
+
 		<sequence>
-			<element maxOccurs="1" minOccurs="1" name="default-interval">
-	         <annotation>
-	           <documentation>period for the date offset \
                (day|month|year)</documentation>
-	         </annotation>
-	         <simpleType>
-	           <restriction base="string">
-	             <pattern value="(day|month|year)"/>
-	           </restriction>
-	         </simpleType>
-	       </element>
-	       <element maxOccurs="1" minOccurs="1" name="default-count" type="integer" />
+			<element maxOccurs="1" minOccurs="1" name="default-interval" \
type="this:date-interval" /> +			<element maxOccurs="1" minOccurs="1" \
name="default-count" type="int" />  </sequence>
-		
+
 		<attribute name="name" type="string" use="required">
 			<annotation>
-				<documentation>the name of this parameter as passed to the report \
engine</documentation> +				<documentation>the name of this parameter as passed to \
the report +					engine</documentation>
 			</annotation>
 		</attribute>
-		
+
 		<attribute name="display-name" type="string" use="required">
 			<annotation>
 				<documentation>the name of this parameter as displayed in the
 					webui</documentation>
 			</annotation>
 		</attribute>
-	
+		
+		<attribute name="use-absolute-date" type="boolean" use="optional">
+			<annotation>
+				<documentation>flag to use absolute date if possible</documentation>
+			</annotation>
+		</attribute>
+
 	</complexType>
 
-	<complexType name="report-parm">
+	<complexType name="string-parm">
+
 		<annotation>
 			<documentation>
-				Parameters taken by this report
+				A string parameter passed to the report engine
 			</documentation>
 		</annotation>
+
 		<sequence>
-		<element maxOccurs="1" minOccurs="0" name="default" type="string">
-			<annotation>
-				<documentation>value</documentation>
-			</annotation>
-		</element>
+			<element maxOccurs="1" minOccurs="0" name="default" type="string">
+				<annotation>
+					<documentation>value</documentation>
+				</annotation>
+			</element>
 		</sequence>
+
 		<attribute name="name" type="string" use="required">
 			<annotation>
-				<documentation>the name of this parameter as passed to the report \
engine</documentation> +				<documentation>the name of this parameter as passed to \
the report +					engine</documentation>
 			</annotation>
 		</attribute>
+
 		<attribute name="display-name" type="string" use="required">
 			<annotation>
 				<documentation>the name of this parameter as displayed in the
 					webui</documentation>
 			</annotation>
 		</attribute>
+
+		<attribute name="input-type" use="required">
+			<annotation>
+				<documentation>indicates if collected SNMP data is to be
+					stored for
+					"all" interfaces or only for the "primary"
+					interface.</documentation>
+			</annotation>
+
+			<simpleType>
+				<restriction base="string">
+					<pattern value="(reportCategorySelector|freeText)" />
+				</restriction>
+			</simpleType>
+		</attribute>
+
 	</complexType>
-	
 
+	<simpleType name="date-interval">
+		<annotation>
+			<documentation>
+				Parameters taken by this report
+			</documentation>
+		</annotation>
+		<restriction base="string">
+			<pattern value="(day|month|year)" />
+		</restriction>
+	</simpleType>
+
 </schema>
\ No newline at end of file

Modified: opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/DatabaseReportConfigDao.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/DatabaseReportConfigDao.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/DatabaseReportConfigDao.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -37,18 +37,22 @@
 
 import java.util.List;
 
+import org.opennms.netmgt.config.databaseReports.DateParm;
 import org.opennms.netmgt.config.databaseReports.Report;
 import org.opennms.netmgt.config.databaseReports.ReportParm;
+import org.opennms.netmgt.config.databaseReports.StringParm;
 
 public interface DatabaseReportConfigDao {
     
     ReportParm[] getDates(String id);
 
-    ReportParm[] getReportCategories(String id);
+    DateParm[] getDateParms(String id);
     
+    StringParm[] getStringParms(String id);
+    
     List <Report> getReports();
     
-    String getEngine(String id);
+    String getReportService(String id);
     
     String getDisplayName(String id);
     

Modified: opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDao.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDao.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-dao/src/main/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDao.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -39,9 +39,10 @@
 import java.util.List;
 
 import org.opennms.netmgt.config.databaseReports.DatabaseReports;
-import org.opennms.netmgt.config.databaseReports.DateOffset;
+import org.opennms.netmgt.config.databaseReports.DateParm;
 import org.opennms.netmgt.config.databaseReports.Report;
 import org.opennms.netmgt.config.databaseReports.ReportParm;
+import org.opennms.netmgt.config.databaseReports.StringParm;
 import org.opennms.netmgt.dao.DatabaseReportConfigDao;
 
 public class DefaultDatabaseReportConfigDao extends \
AbstractCastorConfigDao<DatabaseReports, List<Report>> @@ -68,36 +69,36 @@
         
     }
     
-    public DateOffset[] getDateOffests(String id) {
+    public DateParm[] getDateParms(String id) {
         
-        DateOffset[] dates = null;
+        DateParm[] dateParms = null;
         Report report = getReport(id);
         if (report != null) {
-            dates =  report.getDateOffset();
+            dateParms =  report.getDateParm();
         }
         
-        return dates;
+        return dateParms;
         
     }
     
-    public ReportParm[] getReportCategories(String id) {
+    public StringParm[] getStringParms(String id) {
         
-        ReportParm[] categories = null;
+        StringParm[] stringParms = null;
         Report report = getReport(id);
         if (report != null) {
-            categories =  report.getReportCategory();
+            stringParms =  report.getStringParm();
         }
         
-        return categories;
+        return stringParms;
         
     }
     
-    public String getEngine(String name) {
+    public String getReportService(String name) {
         
         Report report = getReport(name);
         
         if(report != null){
-            return report.getEngineName();
+            return report.getReportService();
         } else {
         return new String();
         }
@@ -119,7 +120,7 @@
     private Report getReport(String name) {
         
         for(Report report : getContainer().getObject()) {
-            if (name.equals(report.getReportName())) {
+            if (name.equals(report.getId())) {
                 return report;
             }
         }

Modified: opennms/branches/feature-reportd/opennms-dao/src/test/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDaoTest.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-dao/src/test/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDaoTest.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-dao/src/test/java/org/opennms/netmgt/dao/castor/DefaultDatabaseReportConfigDaoTest.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -41,6 +41,7 @@
 
 import org.junit.Test;
 import org.opennms.netmgt.config.databaseReports.DateOffset;
+import org.opennms.netmgt.config.databaseReports.DateParm;
 import org.opennms.netmgt.config.databaseReports.ReportParm;
 import org.opennms.test.ConfigurationTestUtils;
 import org.springframework.core.io.ClassPathResource;
@@ -53,6 +54,7 @@
     private static final String DESCRIPTION = "default calendar report";
     private static final String DATE_DISPLAY_NAME = "end date";
     private static final String DATE_NAME = "endDate";
+    private static final String REPORT_SERVICE = "onmsBatchDatabaseReportService";
     
 
     @Test
@@ -63,21 +65,18 @@
         dao.setConfigResource(resource);
         dao.afterPropertiesSet();
         
-        ReportParm[] dates = dao.getDates(NAME);
+        assertEquals(dao.getReportService(NAME),REPORT_SERVICE);
         
+        DateParm[] dates = dao.getDateParms(NAME);
         assertEquals(dates.length,1);
         assertEquals(dates[0].getName(),DATE_NAME);
         assertEquals(dates[0].getDisplayName(),DATE_DISPLAY_NAME);
+        assertEquals(dates[0].getUseAbsoluteDate(),true);
+        assertEquals(dates[0].getDefaultCount(),1);
+        assertEquals(dates[0].getDefaultInterval(),"day");
         
-        DateOffset[] offset = dao.getDateOffests(NAME);
-        assertEquals(offset.length,1);
-        assertEquals(offset[0].getName(),DATE_NAME);
-        assertEquals(offset[0].getDisplayName(),DATE_DISPLAY_NAME);
-        assertEquals(offset[0].getDefaultCount(),1);
-        assertEquals(offset[0].getDefaultInterval(),"day");
         
         
-        
     }
 
 }

Modified: opennms/branches/feature-reportd/opennms-dao/src/test/resources/database-reports-testdata.xml
 ===================================================================
--- opennms/branches/feature-reportd/opennms-dao/src/test/resources/database-reports-testdata.xml	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-dao/src/test/resources/database-reports-testdata.xml	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -3,13 +3,12 @@
 	xmlns:this="http://xmlns.opennms.org/xsd/config/opennms-database-reports"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://xmlns.opennms.org/xsd/config/opennms-database-reports">
-	<report report-name="defaultCalendarReport" display-name="default calendar report"
-		engine-name="opennms" description="standard opennms report in calendar format">
-		<date name="endDate" display-name="end date"/>
-		<report-category name="reportCategory" display-name="report category"/>
-		<date-offset name="endDate" display-name="end date">
+	<report id="defaultCalendarReport" display-name="default calendar report"
+		report-service="onmsBatchDatabaseReportService" description="standard opennms \
report in calendar format"> +		<string-parm name="reportCategory" \
display-name="report category" input-type="reportCategorySelector" /> +		<date-parm \
name="endDate" display-name="end date" use-absolute-date="true">  \
<default-interval>day</default-interval>  <default-count>1</default-count>
-		</date-offset>
+		</date-parm>
 	</report>
 </database-reports>
\ No newline at end of file

Deleted: opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCategoryParm.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCategoryParm.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCategoryParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,58 +0,0 @@
-//
-// This file is part of the OpenNMS(R) Application.
-//
-// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
-// OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
-// code that was published under the GNU General Public License. Copyrights for \
                modified
-// and included code are below.
-//
-// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
-//
-// Modifications:
-// 
-// Created: October 5th, 2009 jonathan@opennms.org
-//
-// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-// For more information contact:
-//      OpenNMS Licensing       <license@opennms.org>
-//      http://www.opennms.org/
-//      http://www.opennms.com/
-//
-package org.opennms.netmgt.model;
-
-import java.io.Serializable;
-
-public class DatabaseReportCategoryParm extends DatabaseReportParm implements \
                Serializable {
-    
-    
-    private static final long serialVersionUID = -2057597127243217834L;
-    
-    String m_category;
-    
-    public DatabaseReportCategoryParm() {
-      super();
-    }
-    
-    public String getCategory() {
-        return m_category;
-    }
-    public void setCategory(String category) {
-        m_category = category;
-    }
-
-}

Deleted: opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCriteria.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCriteria.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCriteria.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,122 +0,0 @@
-//
-// This file is part of the OpenNMS(R) Application.
-//
-// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
-// OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
-// code that was published under the GNU General Public License. Copyrights for \
                modified
-// and included code are below.
-//
-// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
-//
-// Modifications:
-// 
-// Created: November 9th, 2009 jonathan@opennms.org
-//
-// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-// For more information contact:
-//      OpenNMS Licensing       <license@opennms.org>
-//      http://www.opennms.org/
-//      http://www.opennms.com/
-//
-package org.opennms.netmgt.model;
-
-import java.io.Serializable;
-import java.util.List;
-
-
-public class DatabaseReportCriteria implements Serializable {
-
-    private static final long serialVersionUID = -3848794546173077375L;
-    protected String m_reportId;
-    protected String m_displayName;
-    protected List <DatabaseReportCategoryParm> m_categories;
-    protected List <DatabaseReportDateParm> m_dates;
-    protected String m_mailTo;
-    protected Boolean m_persist;
-    protected Boolean m_sendMail;
-    protected String m_mailFormat;
-
-    public DatabaseReportCriteria() {
-        super();
-    }
-
-    public String getMailTo() {
-        return m_mailTo;
-    }
-
-    public void setMailTo(String email) {
-        m_mailTo = email;
-    }
-
-    public String getMailFormat() {
-        return m_mailFormat;
-    }
-
-    public void setMailFormat(String format) {
-        m_mailFormat = format;
-    }
-
-    public List<DatabaseReportDateParm> getDates() {
-        return m_dates;
-    }
-
-    public void setDates(List<DatabaseReportDateParm> dates) {
-        m_dates = dates;
-    }
-
-    public List<DatabaseReportCategoryParm> getCategories() {
-        return m_categories;
-    }
-
-    public void setCategories(List<DatabaseReportCategoryParm> categories) {
-        m_categories = categories;
-    }
-
-    public void setPersist(Boolean persist) {
-        m_persist = persist;
-    }
-
-    public Boolean getPersist() {
-        return m_persist;
-    }
-
-    public void setSendMail(Boolean sendEmail) {
-        m_sendMail = sendEmail;
-    }
-
-    public Boolean getSendMail() {
-        return m_sendMail;
-    }
-
-    public void setReportId(String reportId) {
-        m_reportId = reportId;
-    }
-
-    public String getReportId() {
-        return m_reportId;
-    }
-
-    public void setDisplayName(String displayName) {
-        m_displayName = displayName;
-    }
-
-    public String getDisplayName() {
-        return m_displayName;
-    }
-
-}
\ No newline at end of file

Deleted: opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportDateParm.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportDateParm.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportDateParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,58 +0,0 @@
-//
-// This file is part of the OpenNMS(R) Application.
-//
-// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
-// OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
-// code that was published under the GNU General Public License. Copyrights for \
                modified
-// and included code are below.
-//
-// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
-//
-// Modifications:
-// 
-// Created: October 5th, 2009 jonathan@opennms.org
-//
-// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-// For more information contact:
-//      OpenNMS Licensing       <license@opennms.org>
-//      http://www.opennms.org/
-//      http://www.opennms.com/
-//
-package org.opennms.netmgt.model;
-
-import java.io.Serializable;
-import java.util.Date;
-
-public class DatabaseReportDateParm extends DatabaseReportParm implements \
                Serializable {
-
-    private static final long serialVersionUID = -8528562178984136887L;
-    
-    Date m_date;
-    
-    public DatabaseReportDateParm() {
-        super();
-    }
-    
-    public Date getDate() {
-        return m_date;
-    }
-    public void setDate(Date date) {
-        m_date = date;
-    } 
-
-}

Deleted: opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportParm.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportParm.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,63 +0,0 @@
-//
-// This file is part of the OpenNMS(R) Application.
-//
-// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
-// OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
-// code that was published under the GNU General Public License. Copyrights for \
                modified
-// and included code are below.
-//
-// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
-//
-// Modifications:
-// 
-// Created: October 5th, 2009 jonathan@opennms.org
-//
-// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-// For more information contact:
-//      OpenNMS Licensing       <license@opennms.org>
-//      http://www.opennms.org/
-//      http://www.opennms.com/
-//
-package org.opennms.netmgt.model;
-
-import java.io.Serializable;
-
-public class DatabaseReportParm implements Serializable {
-
-    private static final long serialVersionUID = -7987984390575422836L;
-    
-    String m_name;
-    String m_displayName;
-
-    public String getName() {
-        return m_name;
-    }
-
-    public void setName(String name) {
-        m_name = name;
-    }
-
-    public String getDisplayName() {
-        return m_displayName;
-    }
-
-    public void setDisplayName(String displayName) {
-        m_displayName = displayName;
-    }
-
-}
\ No newline at end of file

Added: opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/BatchReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/BatchReportService.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/BatchReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,53 @@
+/*
+ * This file is part of the OpenNMS(R) Application.
+ *
+ * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ * OpenNMS(R) is a derivative work, containing both original code, included code and \
modified + * code that was published under the GNU General Public License. Copyrights \
for modified + * and included code are below.
+ *
+ * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+ *
+ * Modifications:
+ * 
+ * Created: November 23, 2009 jonathan@opennms.org
+ * 
+ * TODO: Move this into an API project
+ *
+ * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * For more information contact:
+ *      OpenNMS Licensing       <license@opennms.org>
+ *      http://www.opennms.org/
+ *      http://www.opennms.com/
+ */
+package org.opennms.report.availability.svclayer;
+
+import java.util.HashMap;
+
+public interface BatchReportService {
+
+    public abstract boolean validate(HashMap<String, Object> reportParms,
+            String reportID);
+
+    public abstract void runAndPersist(HashMap<String, Object> reportParms,
+            String reportID);
+
+    public abstract void runAndMail(HashMap<String, Object> reportParms,
+            String reportId, String recipient, String format);
+
+}
\ No newline at end of file

Deleted: opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/DatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/DatabaseReportService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/DatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,44 +0,0 @@
-/*
- * This file is part of the OpenNMS(R) Application.
- *
- * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- * OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
- * code that was published under the GNU General Public License. Copyrights for \
                modified
- * and included code are below.
- *
- * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
- *
- * Modifications:
- * 
- * Created: November 11, 2009 jonathan@opennms.org
- *
- * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * For more information contact:
- *      OpenNMS Licensing       <license@opennms.org>
- *      http://www.opennms.org/
- *      http://www.opennms.com/
- */
-package org.opennms.report.availability.svclayer;
-
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-
-public interface DatabaseReportService {
-    
-    public void run(DatabaseReportCriteria criteria);
-
-}

Added: opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsBatchDatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsBatchDatabaseReportService.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsBatchDatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,232 @@
+/*
+ * This file is part of the OpenNMS(R) Application.
+ *
+ * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ * OpenNMS(R) is a derivative work, containing both original code, included code and \
modified + * code that was published under the GNU General Public License. Copyrights \
for modified + * and included code are below.
+ *
+ * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+ *
+ * Modifications:
+ * 
+ * Created: November 23, 2009 jonathan@opennms.org
+ *
+ * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * For more information contact:
+ *      OpenNMS Licensing       <license@opennms.org>
+ *      http://www.opennms.org/
+ *      http://www.opennms.com/
+ */
+package org.opennms.report.availability.svclayer;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+
+import org.apache.log4j.Category;
+import org.opennms.core.utils.ThreadCategory;
+import org.opennms.netmgt.dao.OnmsDatabaseReportConfigDao;
+import org.opennms.report.availability.AvailabilityCalculationException;
+import org.opennms.report.availability.AvailabilityCalculator;
+import org.opennms.report.availability.ReportMailer;
+import org.opennms.report.availability.render.HTMLReportRenderer;
+import org.opennms.report.availability.render.PDFReportRenderer;
+import org.opennms.report.availability.render.ReportRenderException;
+import org.opennms.report.availability.render.ReportRenderer;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.UrlResource;
+
+public class OnmsBatchDatabaseReportService implements BatchReportService, \
ReportValidationService { +    
+    private AvailabilityCalculator m_classicCalculator;
+
+    private AvailabilityCalculator m_calendarCalculator;
+    
+    private OnmsDatabaseReportConfigDao m_configDao;
+    
+    private Category log;
+
+    private static final String LOG4J_CATEGORY = "OpenNMS.Report";
+
+    private static final String HTML_FORMAT = "HTML";
+    private static final String SVG_FORMAT = "SVG";
+    private static final String PDF_FORMAT = "PDF";
+    private static final String CAL_TYPE = "calendar";
+    
+    private static final String HTML_OUTPUT_FILE_NAME = "AvailReport.html";
+    private static final String SVG_OUTPUT_FILE_NAME = "SVGAvailReport.pdf";
+    private static final String PDF_OUTPUT_FILE_NAME = "PDFAvailReport.pdf";
+    
+    public OnmsBatchDatabaseReportService() {
+
+        ThreadCategory.setPrefix(LOG4J_CATEGORY);
+        log = ThreadCategory.getInstance(OnmsBatchDatabaseReportService.class);
+        
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.opennms.report.availability.svclayer.BatchDatabaseReportService#validate(java.util.HashMap, \
java.lang.String) +     */
+    public boolean validate(HashMap<String, Object> reportParms, String reportID){
+        
+        if (!reportParms.containsKey("endDate")) {
+            log.fatal("report parameters should contain parameter endDate");
+            return false;
+        }
+        
+        if (!(reportParms.get("endDate") instanceof Date)){
+            log.fatal("report parameters 'endDate' should be a Date");
+            return false;
+        }
+
+        if (!reportParms.containsKey("reportCategory")) {
+            log.fatal("report parameters should contain parameter reportCategory");
+            return false;
+        }
+
+        if (!(reportParms.get("reportCategory") instanceof String)){
+            log.fatal("report parameter 'reportCategory' should be a String");
+            return false;
+        }
+        
+        return true;
+        
+    }
+
+    /* (non-Javadoc)
+     * @see org.opennms.report.availability.svclayer.BatchDatabaseReportService#runAndPersist(java.util.HashMap, \
java.lang.String) +     */
+    public void runAndPersist(HashMap<String, Object> reportParms, String reportID) \
{ +        
+        runInternal(reportParms, reportID);
+        
+    }
+    
+    private String runInternal(HashMap<String, Object> reportParms, String reportId) \
{ +        
+        AvailabilityCalculator calculator;
+        String reportFileName = null;
+        
+        log.debug("running OpenNMS database report " + reportId);
+        
+        if (m_configDao.getType(reportId).equalsIgnoreCase(CAL_TYPE)) {
+            calculator = m_calendarCalculator;
+            log.debug("Calendar report format selected");
+        } else {
+            calculator = m_classicCalculator;
+            log.debug("Classic report format selected");
+        }
+        
+        calculator.setCategoryName((String) reportParms.get("reportCategory"));
+        
+        calculator.setCalendar(new GregorianCalendar());
+        calculator.setPeriodEndDate((Date) reportParms.get("endDate"));
+        
+        calculator.setLogoURL(m_configDao.getLogo(reportId));
+        
+
+        // have the calculator calculate everything to enable any of the templates \
to work +        // This will have some performance impact.
+        
+        calculator.setReportFormat("all");
+        
+        log.debug("Starting Availability Report Calculations");
+        try {
+            calculator.calculate();
+            reportFileName = calculator.writeLocateableXML();
+        } catch (AvailabilityCalculationException ce) {
+            log.fatal("Unable to calculate report data ", ce);
+        }
+
+        return reportFileName;
+        
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.opennms.report.availability.svclayer.BatchDatabaseReportService#runAndMail(java.util.HashMap, \
java.lang.String, java.lang.String, java.lang.String) +     */
+    public void runAndMail(HashMap<String, Object> reportParms, String reportId, \
String recipient, String format) { +    
+        Resource xsltResource;
+        String inputFileName;
+        String outputFileName;
+        ReportRenderer renderer;
+        
+        inputFileName = runInternal(reportParms, reportId);
+        
+        if (inputFileName != null) {
+ 
+            try {
+                
+                if (format.equalsIgnoreCase(HTML_FORMAT)) {
+                    renderer = new HTMLReportRenderer();
+                    xsltResource =  new \
UrlResource(m_configDao.getHtmlStylesheetLocation(reportId)); +                    \
outputFileName = HTML_OUTPUT_FILE_NAME; +                } else {
+                    renderer = new PDFReportRenderer();
+                    if (format.equalsIgnoreCase(SVG_FORMAT)) {
+                        xsltResource =  new \
UrlResource(m_configDao.getSvgStylesheetLocation(reportId)); +                        \
outputFileName = SVG_OUTPUT_FILE_NAME; +             
+                    } else {
+                        xsltResource =  new \
UrlResource(m_configDao.getPdfStylesheetLocation(reportId)); +                        \
outputFileName = PDF_OUTPUT_FILE_NAME; +                    }
+                }
+                String baseDir = System.getProperty("opennms.report.dir");
+                log.debug("render base dir: " + baseDir);
+                log.debug("render input file: " + inputFileName);
+                log.debug("render output file: " + outputFileName);
+                log.debug("render template: " + xsltResource);
+                renderer.setBaseDir(baseDir);
+                renderer.render(inputFileName, outputFileName, xsltResource);
+                ReportMailer mailer = new ReportMailer(
+                                                       recipient,
+                                                       baseDir + "/" + \
outputFileName); +                mailer.send();
+                
+            } catch (MalformedURLException e) {
+                log.fatal("Malformed URL for xslt template");
+            } catch (ReportRenderException e) {
+                log.fatal("unable to render report");
+            } catch (IOException e) {
+                log.fatal("unable to mail report");
+            }
+        }
+
+
+    }
+    
+    public void setCalendarCalculator(AvailabilityCalculator calculator) {
+        m_calendarCalculator = calculator;
+    }
+
+    public void setClassicCalculator(AvailabilityCalculator calulator) {
+        m_classicCalculator = calulator;
+    }
+
+    public void setConfigDao(OnmsDatabaseReportConfigDao configDao) {
+        m_configDao = configDao;
+    }
+
+}

Deleted: opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsDatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsDatabaseReportService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/OnmsDatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,202 +0,0 @@
-/*
- * This file is part of the OpenNMS(R) Application.
- *
- * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- * OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
- * code that was published under the GNU General Public License. Copyrights for \
                modified
- * and included code are below.
- *
- * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
- *
- * Modifications:
- * 
- * Created: November 11, 2009 jonathan@opennms.org
- *
- * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * For more information contact:
- *      OpenNMS Licensing       <license@opennms.org>
- *      http://www.opennms.org/
- *      http://www.opennms.com/
- */
-package org.opennms.report.availability.svclayer;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.GregorianCalendar;
-
-import org.apache.log4j.Category;
-import org.opennms.core.utils.ThreadCategory;
-import org.opennms.netmgt.dao.OnmsDatabaseReportConfigDao;
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-import org.opennms.report.availability.AvailabilityCalculationException;
-import org.opennms.report.availability.AvailabilityCalculator;
-import org.opennms.report.availability.ReportMailer;
-import org.opennms.report.availability.render.HTMLReportRenderer;
-import org.opennms.report.availability.render.PDFReportRenderer;
-import org.opennms.report.availability.render.ReportRenderException;
-import org.opennms.report.availability.render.ReportRenderer;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.UrlResource;
-
-public class OnmsDatabaseReportService implements Runnable {
-    
-    private AvailabilityCalculator m_classicCalculator;
-
-    private AvailabilityCalculator m_calendarCalculator;
-    
-    private OnmsDatabaseReportConfigDao m_configDao;
-    
-    private Category log;
-
-    private DatabaseReportCriteria m_criteria;
-
-    private static final String LOG4J_CATEGORY = "OpenNMS.Report";
-
-    private static final String HTML_FORMAT = "HTML";
-    private static final String SVG_FORMAT = "SVG";
-    private static final String PDF_FORMAT = "PDF";
-    private static final String CAL_TYPE = "calendar";
-    
-    private static final String HTML_OUTPUT_FILE_NAME = "AvailReport.html";
-    private static final String SVG_OUTPUT_FILE_NAME = "SVGAvailReport.pdf";
-    private static final String PDF_OUTPUT_FILE_NAME = "PDFAvailReport.pdf";
-    
-    public OnmsDatabaseReportService() {
-
-        ThreadCategory.setPrefix(LOG4J_CATEGORY);
-        log = ThreadCategory.getInstance(OnmsDatabaseReportService.class);
-        
-    }
-    
-    public void run(DatabaseReportCriteria criteria) {
-        this.setCriteria(criteria);
-        run();
-    }
-
-    public void run() {
-        
-        Resource xsltResource;
-        
-        AvailabilityCalculator calculator;
-        String inputFileName;
-        String outputFileName;
-        ReportRenderer renderer;
-        
-        log.debug("running OpenNMS database report " + m_criteria.getReportId());
-        log.debug(m_configDao.getType(m_criteria.getReportId()) + " type report \
                selected");
-        
-        if (m_configDao.getType(m_criteria.getReportId()).equalsIgnoreCase(CAL_TYPE)) \
                {
-            calculator = m_calendarCalculator;
-            log.debug("Calendar report format selected");
-        } else {
-            calculator = m_classicCalculator;
-            log.debug("Classic report format selected");
-        }
-        
-        calculator.setCalendar(new GregorianCalendar());
-        
-        // TODO fix this so that it uses the right name for the category
-        calculator.setCategoryName(getCriteria().getCategories().get(0).getCategory());
                
-        // TODO fix this so that it uses the right name for the date
-        calculator.setPeriodEndDate(getCriteria().getDates().get(0).getDate());
-        
-        calculator.setLogoURL(m_configDao.getLogo(getCriteria().getReportId()));
-        
-        if (getCriteria().getMailFormat() == null || \
                getCriteria().getMailFormat().equalsIgnoreCase(SVG_FORMAT)) {
-            log.debug("report will be calculated as PDF with embedded SVG");
-            calculator.setReportFormat(SVG_FORMAT);
-        } else if (getCriteria().getMailFormat().equalsIgnoreCase(SVG_FORMAT)) {
-            log.debug("report will be calculated as PDF");
-            calculator.setReportFormat(PDF_FORMAT);
-        } else {
-            log.debug("report will be calculated as html");
-            calculator.setReportFormat(HTML_FORMAT);
-        }
-        
-        
-        try {
-            log.debug("Starting Availability Report Calculations");
-            calculator.calculate();
-            if (getCriteria().getPersist() == true) {
-                inputFileName = calculator.writeLocateableXML();
-            } else {
-                inputFileName = calculator.writeXML();
-            }
-            if (getCriteria().getSendMail() == true) {
-                if (getCriteria().getMailFormat().equalsIgnoreCase(HTML_FORMAT)) {
-                    renderer = new HTMLReportRenderer();
-                    xsltResource =  new \
                UrlResource(m_configDao.getHtmlStylesheetLocation(getCriteria().getReportId()));
                
-                    outputFileName = HTML_OUTPUT_FILE_NAME;
-                } else {
-                    renderer = new PDFReportRenderer();
-                    if (getCriteria().getMailFormat().equalsIgnoreCase(SVG_FORMAT)) \
                {
-                        xsltResource =  new \
                UrlResource(m_configDao.getSvgStylesheetLocation(getCriteria().getReportId()));
                
-                        outputFileName = SVG_OUTPUT_FILE_NAME;
-             
-                    } else {
-                        xsltResource =  new \
                UrlResource(m_configDao.getPdfStylesheetLocation(getCriteria().getReportId()));
                
-                        outputFileName = PDF_OUTPUT_FILE_NAME;
-                    }
-                }
-                String baseDir = System.getProperty("opennms.report.dir");
-                log.debug("render base dir: " + baseDir);
-                log.debug("render input file: " + inputFileName);
-                log.debug("render output file: " + outputFileName);
-                log.debug("render template: " + xsltResource);
-                renderer.setBaseDir(baseDir);
-                renderer.render(inputFileName, outputFileName, xsltResource);
-                ReportMailer mailer = new ReportMailer(
-                                                       getCriteria().getMailTo(),
-                                                       baseDir + "/" + \
                outputFileName);
-                mailer.send();
-            }
-            
-        } catch (AvailabilityCalculationException ce) {
-            log.fatal("Unable to calculate report data ", ce);
-        } catch (MalformedURLException e) {
-            log.fatal("Malformed URL for xslt template");
-        } catch (ReportRenderException e) {
-            log.fatal("unable to render report");
-        } catch (IOException e) {
-            log.fatal("unable to mail report");
-        }
-
-
-    }
-    
-    public void setCalendarCalculator(AvailabilityCalculator calculator) {
-        m_calendarCalculator = calculator;
-    }
-
-    public void setClassicCalculator(AvailabilityCalculator calulator) {
-        m_classicCalculator = calulator;
-    }
-
-    public void setCriteria(DatabaseReportCriteria criteria) {
-        m_criteria = criteria;
-    }
-
-    public DatabaseReportCriteria getCriteria() {
-        return m_criteria;
-    }
-
-    public void setConfigDao(OnmsDatabaseReportConfigDao configDao) {
-        m_configDao = configDao;
-    }
-
-}

Added: opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/ReportValidationService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/ReportValidationService.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/java/org/opennms/report/availability/svclayer/ReportValidationService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,45 @@
+/*
+ * This file is part of the OpenNMS(R) Application.
+ *
+ * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ * OpenNMS(R) is a derivative work, containing both original code, included code and \
modified + * code that was published under the GNU General Public License. Copyrights \
for modified + * and included code are below.
+ *
+ * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+ *
+ * Modifications:
+ * 
+ * Created: November 23, 2009 jonathan@opennms.org
+ *
+ * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * For more information contact:
+ *      OpenNMS Licensing       <license@opennms.org>
+ *      http://www.opennms.org/
+ *      http://www.opennms.com/
+ */
+package org.opennms.report.availability.svclayer;
+
+import java.util.HashMap;
+
+public interface ReportValidationService {
+    
+    public abstract boolean validate(HashMap<String, Object> reportParms,
+            String reportID);
+
+}

Modified: opennms/branches/feature-reportd/opennms-reporting/src/main/resources/META-INF/opennms/applicationContext-reporting.xml
 ===================================================================
--- opennms/branches/feature-reportd/opennms-reporting/src/main/resources/META-INF/opennms/applicationContext-reporting.xml	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-reporting/src/main/resources/META-INF/opennms/applicationContext-reporting.xml	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -126,8 +126,8 @@
 		<property name="reportRunner" ref="availabilityReportRunner" />
 	</bean>
 	
-	<bean id="onmsDatabaseReportService"
-		class="org.opennms.report.availability.svclayer.OnmsDatabaseReportService"
+	<bean id="onmsBatchDatabaseReportService"
+		class="org.opennms.report.availability.svclayer.OnmsBatchDatabaseReportService"
 		scope="prototype">
 		<property name="configDao" ref="onmsDatabaseReportConfigDao" /> 
 		<property name="calendarCalculator">

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/command/DatabaseReportCriteriaCommand.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/command/DatabaseReportCriteriaCommand.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/command/DatabaseReportCriteriaCommand.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -37,9 +37,9 @@
 
 import java.util.Iterator;
 
-import org.opennms.netmgt.model.DatabaseReportCategoryParm;
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-import org.opennms.netmgt.model.DatabaseReportDateParm;
+import org.opennms.web.report.database.model.DatabaseReportCriteria;
+import org.opennms.web.report.database.model.DatabaseReportDateParm;
+import org.opennms.web.report.database.model.DatabaseReportStringParm;
 import org.springframework.binding.message.MessageBuilder;
 import org.springframework.binding.message.MessageContext;
 import org.springframework.binding.validation.ValidationContext;
@@ -68,19 +68,21 @@
         public void validateReportParameters(ValidationContext context) {
             MessageContext messages = context.getMessageContext();
             
-            for (Iterator<DatabaseReportDateParm> dates = m_dates.iterator(); \
                dates.hasNext();) {
-                DatabaseReportDateParm dateParm = dates.next();
-                if (dateParm.getDate() == null) {
-                    messages.addMessage(new \
MessageBuilder().error().source("dates"). +            // this should be replaced \
with a call to validate on the reportengine bean +            
+            for (Iterator<DatabaseReportDateParm> dateParms = \
m_dateParms.iterator(); dateParms.hasNext();) { +                \
DatabaseReportDateParm dateParm = dateParms.next(); +                if \
(dateParm.getValue() == null) { +                    messages.addMessage(new \
                MessageBuilder().error().source("date parms").
                                         defaultText("cannot have null date field" + \
dateParm.getDisplayName()).build());  }
             }
             
-            for (Iterator<DatabaseReportCategoryParm> categories = \
                m_categories.iterator(); categories.hasNext();) {
-                DatabaseReportCategoryParm catParm = categories.next();
-                if (catParm.getCategory() == "" ) {
-                    messages.addMessage(new \
                MessageBuilder().error().source("categories").
-                                        defaultText("cannot have empty category \
field " + catParm.getDisplayName()).build()); +            for \
(Iterator<DatabaseReportStringParm> stringParms = m_stringParms.iterator(); \
stringParms.hasNext();) { +                DatabaseReportStringParm stringParm = \
stringParms.next(); +                if (stringParm.getValue() == "" ) {
+                    messages.addMessage(new MessageBuilder().error().source("string \
parms"). +                                        defaultText("cannot have empty \
category field " + stringParm.getDisplayName()).build());  }
             }
             

Added: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/BatchReportJob.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/BatchReportJob.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/BatchReportJob.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,78 @@
+/*
+ * This file is part of the OpenNMS(R) Application.
+ *
+ * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ * OpenNMS(R) is a derivative work, containing both original code, included code and \
modified + * code that was published under the GNU General Public License. Copyrights \
for modified + * and included code are below.
+ *
+ * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+ *
+ * Modifications:
+ * 
+ * Created: November 17, 2009 jonathan@opennms.org
+ *
+ * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * For more information contact:
+ *      OpenNMS Licensing       <license@opennms.org>
+ *      http://www.opennms.org/
+ *      http://www.opennms.com/
+ */
+
+package org.opennms.web.report.database;
+
+import org.opennms.report.availability.svclayer.BatchReportService;
+import org.opennms.web.report.database.model.DatabaseReportCriteria;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+public class BatchReportJob extends QuartzJobBean {
+    
+    private ApplicationContext m_context;
+
+    @Override
+    protected void executeInternal(JobExecutionContext jobContext)
+            throws JobExecutionException {
+        
+        JobDataMap dataMap = jobContext.getMergedJobDataMap();
+        DatabaseReportCriteria criteria = (DatabaseReportCriteria) \
dataMap.get("criteria"); +        
+        BatchReportService reportService = 
+            (BatchReportService)m_context.getBean((String)dataMap.get("reportServiceName"));
 +        
+        if (criteria.getSendMail() == true) {
+            reportService.runAndMail(criteria.getReportParms(),
+                                     criteria.getReportId(),
+                                     criteria.getMailTo(),
+                                     criteria.getMailFormat());
+        } else {
+            reportService.runAndPersist(criteria.getReportParms(),
+                                        criteria.getReportId());
+        }
+    }
+    
+    public void setApplicationContext(ApplicationContext applicationContext) {
+        m_context = applicationContext;
+    }
+    
+    
+
+}

Deleted: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/ReportJob.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/ReportJob.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/ReportJob.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,70 +0,0 @@
-/*
- * This file is part of the OpenNMS(R) Application.
- *
- * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- * OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
- * code that was published under the GNU General Public License. Copyrights for \
                modified
- * and included code are below.
- *
- * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
- *
- * Modifications:
- * 
- * Created: November 17, 2009 jonathan@opennms.org
- *
- * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * For more information contact:
- *      OpenNMS Licensing       <license@opennms.org>
- *      http://www.opennms.org/
- *      http://www.opennms.com/
- */
-
-package org.opennms.web.report.database;
-
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-import org.opennms.report.availability.svclayer.OnmsDatabaseReportService;
-import org.quartz.JobDataMap;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-public class ReportJob extends QuartzJobBean {
-    
-    private ApplicationContext m_context;
-
-    @Override
-    protected void executeInternal(JobExecutionContext jobContext)
-            throws JobExecutionException {
-        
-        JobDataMap dataMap = jobContext.getMergedJobDataMap();
-        DatabaseReportCriteria criteria = (DatabaseReportCriteria) \
                dataMap.get("criteria");
-        
-        OnmsDatabaseReportService reportService = \
                (OnmsDatabaseReportService)m_context.getBean("onmsDatabaseReportService");
                
-        
-        reportService.run(criteria);
-
-    }
-    
-    public void setApplicationContext(ApplicationContext applicationContext) {
-        m_context = applicationContext;
-    }
-    
-    
-
-}

Copied: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportCriteria.java \
(from rev 15222, opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportCriteria.java)
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportCriteria.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportCriteria.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,145 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included code and \
modified +// code that was published under the GNU General Public License. Copyrights \
for modified +// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Modifications:
+// 
+// Created: November 9th, 2009 jonathan@opennms.org
+//
+// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+//      OpenNMS Licensing       <license@opennms.org>
+//      http://www.opennms.org/
+//      http://www.opennms.com/
+//
+package org.opennms.web.report.database.model;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class DatabaseReportCriteria implements Serializable {
+
+    private static final long serialVersionUID = -3848794546173077375L;
+    protected String m_reportId;
+    protected String m_displayName;
+    protected List <DatabaseReportDateParm> m_dateParms;
+    protected List <DatabaseReportStringParm> m_stringParms;
+    protected String m_mailTo;
+    protected Boolean m_persist;
+    protected Boolean m_sendMail;
+    protected String m_mailFormat;
+
+    public DatabaseReportCriteria() {
+        super();
+    }
+
+    public String getMailTo() {
+        return m_mailTo;
+    }
+
+    public void setMailTo(String email) {
+        m_mailTo = email;
+    }
+
+    public String getMailFormat() {
+        return m_mailFormat;
+    }
+
+    public void setMailFormat(String format) {
+        m_mailFormat = format;
+    }
+
+    public List<DatabaseReportDateParm> getDateParms() {
+        return m_dateParms;
+    }
+
+    public void setDateParms(List<DatabaseReportDateParm> dateParms) {
+        m_dateParms = dateParms;
+    }
+    
+    public List<DatabaseReportStringParm> getStringParms() {
+        return m_stringParms;
+    }
+
+    public void setStringParms(List<DatabaseReportStringParm> strings) {
+        m_stringParms = strings;
+    }
+
+    public void setPersist(Boolean persist) {
+        m_persist = persist;
+    }
+
+    public Boolean getPersist() {
+        return m_persist;
+    }
+
+    public void setSendMail(Boolean sendEmail) {
+        m_sendMail = sendEmail;
+    }
+
+    public Boolean getSendMail() {
+        return m_sendMail;
+    }
+
+    public void setReportId(String reportId) {
+        m_reportId = reportId;
+    }
+
+    public String getReportId() {
+        return m_reportId;
+    }
+
+    public void setDisplayName(String displayName) {
+        m_displayName = displayName;
+    }
+
+    public String getDisplayName() {
+        return m_displayName;
+    }
+    
+    public HashMap<String, Object> getReportParms() {
+        
+        HashMap <String,Object>parmMap = new HashMap<String, Object>();
+        
+        // Add all the strings from the report
+        Iterator<DatabaseReportStringParm>stringIter = m_stringParms.iterator();
+        while (stringIter.hasNext()) {
+            DatabaseReportStringParm parm = stringIter.next();
+            parmMap.put(parm.getName(), parm.getValue());
+        }
+        
+        // Add all the dates from the report
+        Iterator<DatabaseReportDateParm>dateIter = m_dateParms.iterator();
+        while (dateIter.hasNext()) {
+            DatabaseReportDateParm parm = dateIter.next();
+            parmMap.put(parm.getName(), parm.getValue());
+        }
+        
+        return parmMap;
+    }
+
+}
\ No newline at end of file

Copied: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportDateParm.java \
(from rev 15222, opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportDateParm.java)
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportDateParm.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportDateParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,85 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included code and \
modified +// code that was published under the GNU General Public License. Copyrights \
for modified +// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Modifications:
+// 
+// Created: October 5th, 2009 jonathan@opennms.org
+//
+// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+//      OpenNMS Licensing       <license@opennms.org>
+//      http://www.opennms.org/
+//      http://www.opennms.com/
+//
+package org.opennms.web.report.database.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class DatabaseReportDateParm extends DatabaseReportParm implements \
Serializable { +
+    private static final long serialVersionUID = -8528562178984136887L;
+    
+    Date m_date;
+    Boolean m_useAbsoluteDate;
+    String m_interval;
+    Integer m_count;
+    
+    public DatabaseReportDateParm() {
+        super();
+    }
+    
+    public Boolean getUseAbsoluteDate() {
+        return m_useAbsoluteDate;
+    }
+
+    public void setUseAbsoluteDate(Boolean useAbsoluteDate) {
+        m_useAbsoluteDate = useAbsoluteDate;
+    }
+
+    public String getInterval() {
+        return m_interval;
+    }
+
+    public void setInterval(String interval) {
+        m_interval = interval;
+    }
+
+    public Integer getCount() {
+        return m_count;
+    }
+
+    public void setCount(Integer count) {
+        m_count = count;
+    }
+
+    public Date getValue() {
+        return m_date;
+    }
+    public void setValue(Date date) {
+        m_date = date;
+    } 
+
+}

Copied: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportParm.java \
(from rev 15222, opennms/branches/feature-reportd/opennms-model/src/main/java/org/opennms/netmgt/model/DatabaseReportParm.java)
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportParm.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,63 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included code and \
modified +// code that was published under the GNU General Public License. Copyrights \
for modified +// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Modifications:
+// 
+// Created: October 5th, 2009 jonathan@opennms.org
+//
+// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+//      OpenNMS Licensing       <license@opennms.org>
+//      http://www.opennms.org/
+//      http://www.opennms.com/
+//
+package org.opennms.web.report.database.model;
+
+import java.io.Serializable;
+
+public class DatabaseReportParm implements Serializable {
+
+    private static final long serialVersionUID = -7987984390575422836L;
+    
+    String m_name;
+    String m_displayName;
+
+    public String getName() {
+        return m_name;
+    }
+
+    public void setName(String name) {
+        m_name = name;
+    }
+
+    public String getDisplayName() {
+        return m_displayName;
+    }
+
+    public void setDisplayName(String displayName) {
+        m_displayName = displayName;
+    }
+
+}
\ No newline at end of file

Added: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportStringParm.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportStringParm.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/report/database/model/DatabaseReportStringParm.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,67 @@
+//
+// This file is part of the OpenNMS(R) Application.
+//
+// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc.  All rights reserved.
+// OpenNMS(R) is a derivative work, containing both original code, included code and \
modified +// code that was published under the GNU General Public License. Copyrights \
for modified +// and included code are below.
+//
+// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
+//
+// Modifications:
+// 
+// Created: October 5th, 2009 jonathan@opennms.org
+//
+// Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+// For more information contact:
+//      OpenNMS Licensing       <license@opennms.org>
+//      http://www.opennms.org/
+//      http://www.opennms.com/
+//
+package org.opennms.web.report.database.model;
+
+import java.io.Serializable;
+
+public class DatabaseReportStringParm extends DatabaseReportParm implements \
Serializable { +    
+    
+    private static final long serialVersionUID = -2057597127243217834L;
+    
+    String m_value;
+    String m_type;
+    
+    public DatabaseReportStringParm() {
+      super();
+    }
+    
+    public String getValue() {
+        return m_value;
+    }
+    
+    public void setValue(String value) {
+        m_value = value;
+    }
+    
+    public String getInputType() {
+        return m_type;
+    }
+    public void setInputType(String type) {
+        m_type = type;
+    }
+
+}

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportCriteriaService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportCriteriaService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportCriteriaService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -36,8 +36,8 @@
 package org.opennms.web.svclayer;
 
 import org.opennms.netmgt.dao.DatabaseReportConfigDao;
-import org.opennms.netmgt.model.DatabaseReportCriteria;
 import org.opennms.web.command.DatabaseReportCriteriaCommand;
+import org.opennms.web.report.database.model.DatabaseReportCriteria;
 
 public interface DatabaseReportCriteriaService {
     

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/DatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -35,7 +35,7 @@
  */
 package org.opennms.web.svclayer;
 
-import org.opennms.netmgt.model.DatabaseReportCriteria;
+import org.opennms.web.report.database.model.DatabaseReportCriteria;
 import org.springframework.webflow.execution.RequestContext;
 
 public interface DatabaseReportService {

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportCriteriaService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportCriteriaService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportCriteriaService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -43,11 +43,13 @@
 import org.exolab.castor.xml.ValidationException;
 import org.opennms.netmgt.config.UserFactory;
 import org.opennms.netmgt.config.UserManager;
+import org.opennms.netmgt.config.databaseReports.DateParm;
 import org.opennms.netmgt.config.databaseReports.ReportParm;
+import org.opennms.netmgt.config.databaseReports.StringParm;
 import org.opennms.netmgt.dao.DatabaseReportConfigDao;
-import org.opennms.netmgt.model.DatabaseReportCategoryParm;
-import org.opennms.netmgt.model.DatabaseReportDateParm;
 import org.opennms.web.command.DatabaseReportCriteriaCommand;
+import org.opennms.web.report.database.model.DatabaseReportDateParm;
+import org.opennms.web.report.database.model.DatabaseReportStringParm;
 import org.opennms.web.svclayer.DatabaseReportCriteriaService;
 
 public class DefaultDatabaseReportCriteriaService implements
@@ -59,42 +61,52 @@
        
         DatabaseReportCriteriaCommand command = new DatabaseReportCriteriaCommand();
         
+        // TODO Extract this lot into a deliveryOptions object
         command.setReportId(id);
         command.setDisplayName(m_dao.getDisplayName(id));
         command.setMailFormat("HTML");
         command.setPersist(true);
         command.setSendMail(true);
         
-        
-        ReportParm[] dates = m_dao.getDates(id);
+        ArrayList<DatabaseReportDateParm> dateParms = new \
ArrayList<DatabaseReportDateParm>(); +        DateParm[] dates = \
m_dao.getDateParms(id);  if (dates.length > 0) {
-            ArrayList<DatabaseReportDateParm> dateParms = new \
ArrayList<DatabaseReportDateParm>();;  for (int i = 0 ; i < dates.length ; i++ ) {
                 DatabaseReportDateParm dateParm = new DatabaseReportDateParm();
-                //dateParm.setDisplayName(dates[i].getDisplayName());
                 dateParm.setDisplayName(dates[i].getDisplayName());
                 dateParm.setName(dates[i].getName());
+                dateParm.setCount(new Integer((int) dates[i].getDefaultCount()));
+                dateParm.setInterval(dates[i].getDefaultInterval());
                 Calendar cal = Calendar.getInstance();
-                dateParm.setDate(cal.getTime());
+                int amount = 0 - dates[i].getDefaultCount();
+                if (dates[i].getDefaultInterval().equals("year")) {
+                    cal.add(Calendar.YEAR, amount);
+                } else { 
+                    if (dates[i].getDefaultInterval().equals("year")) {
+                        cal.add(Calendar.MONTH, amount);
+                    } else {
+                        cal.add(Calendar.DATE, amount);
+                    }
+                }   
+                dateParm.setValue(cal.getTime());
                 dateParms.add(dateParm);
-
             }
-            
-            command.setDates(dateParms);
         }
+        command.setDateParms(dateParms);
         
-        ReportParm[] categories = m_dao.getReportCategories(id);
-        if (categories.length > 0) {
-            ArrayList<DatabaseReportCategoryParm> catParms = new \
                ArrayList<DatabaseReportCategoryParm>();;
-            for (int i = 0 ; i < categories.length ; i++ ) {
-                DatabaseReportCategoryParm catParm = new \
                DatabaseReportCategoryParm();
-                catParm.setDisplayName(categories[i].getDisplayName());
-                catParm.setName(categories[i].getName());
-                catParm.setCategory("Network Interfaces");
-                catParms.add(catParm);
+        ArrayList<DatabaseReportStringParm> stringParms = new \
ArrayList<DatabaseReportStringParm>(); +        StringParm[] strings = \
m_dao.getStringParms(id); +        if (strings.length > 0) {
+            for (int i = 0 ; i < strings.length ; i++ ) {
+                DatabaseReportStringParm stringParm = new \
DatabaseReportStringParm(); +                \
stringParm.setDisplayName(strings[i].getDisplayName()); +                \
stringParm.setName(strings[i].getName()); +                \
stringParm.setInputType(strings[i].getInputType()); +                \
stringParm.setValue(strings[i].getDefault()); +                \
stringParms.add(stringParm);  }
-            command.setCategories(catParms);
         }
+        command.setStringParms(stringParms);
 
         UserManager userFactory = UserFactory.getInstance();
         try {

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportListService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportListService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportListService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -53,7 +53,7 @@
         
         for(Report report : m_dao.getReports()) {
             DatabaseReportDescription summary = new DatabaseReportDescription();
-            summary.setId(report.getReportName());
+            summary.setId(report.getId());
             summary.setDisplayName(report.getDisplayName());
             summary.setDescription(report.getDescription());
             summaryList.add(summary);

Deleted: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/DefaultDatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -1,98 +0,0 @@
-/*
- * This file is part of the OpenNMS(R) Application.
- *
- * OpenNMS(R) is Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- * OpenNMS(R) is a derivative work, containing both original code, included code and \
                modified
- * code that was published under the GNU General Public License. Copyrights for \
                modified
- * and included code are below.
- *
- * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
- *
- * Modifications:
- * 
- * Created: Oct 26, 2009
- * 
- * TODO Remove this class when we're totally happy about the \
                QuartzReportReportService
- *
- * Copyright (C) 2009 The OpenNMS Group, Inc.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * For more information contact:
- *      OpenNMS Licensing       <license@opennms.org>
- *      http://www.opennms.org/
- *      http://www.opennms.com/
- */
-package org.opennms.web.svclayer.support;
-
-import java.util.List;
-
-import org.opennms.netmgt.model.DatabaseReportCategoryParm;
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-import org.opennms.netmgt.model.DatabaseReportDateParm;
-import org.opennms.report.availability.svclayer.OnmsDatabaseReportService;
-import org.opennms.web.svclayer.DatabaseReportService;
-import org.springframework.binding.message.MessageBuilder;
-import org.springframework.webflow.execution.RequestContext;
-
-/**
- * @author user
- *
- */
-public class DefaultDatabaseReportService implements DatabaseReportService {
-    
-    private static final String DATE_NAME = "endDate";
-    private static final String CATEGORY_NAME = "reportCategory";
-
-    private static final String SUCCESS = "success";
-    private static final String ERROR = "error";
-    private static final String CATEGORY_ERROR = 
-        "Report definition must have only one category parameter, with name " + \
                CATEGORY_NAME;
-    private static final String DATE_ERROR = 
-        "Report definition must have only one date parameter, with name " + \
                DATE_NAME;
-    
-    OnmsDatabaseReportService m_reportRunner;
-
-    /* (non-Javadoc)
-     * @see org.opennms.web.svclayer.DatabaseReportService#execute(org.opennms.web.svclayer.support.DatabaseReportCriteria)
                
-     */
-    public String execute(DatabaseReportCriteria criteria, RequestContext context) {
-        
-        List <DatabaseReportCategoryParm> categories = criteria.getCategories();
-        if ((categories.size() != 1) || \
                (!categories.get(0).getName().equals(CATEGORY_NAME))) {
-            context.getMessageContext().addMessage(new MessageBuilder().error()
-                                                   \
                .defaultText(CATEGORY_ERROR).build());
-            return ERROR;
-        } else {
-            List <DatabaseReportDateParm> dates = criteria.getDates();
-            if ((dates.size() != 1) || (!dates.get(0).getName().equals(DATE_NAME))) \
                {
-                context.getMessageContext().addMessage(new MessageBuilder().error()
-                                                       \
                .defaultText(DATE_ERROR).build());
-                return ERROR; 
-            } else {
-              
-                m_reportRunner.setCriteria(criteria);
-                new Thread(m_reportRunner).start();
-                return SUCCESS;
-            }
-        }
-        
-    }
-
-    public void setReportRunner(OnmsDatabaseReportService reportRunner) {
-        m_reportRunner = reportRunner;
-    }    
-
-}

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzDatabaseReportService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzDatabaseReportService.java	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzDatabaseReportService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -36,37 +36,32 @@
 package org.opennms.web.svclayer.support;
 
 import java.util.Date;
-import java.util.List;
 
-import org.opennms.netmgt.model.DatabaseReportCategoryParm;
-import org.opennms.netmgt.model.DatabaseReportCriteria;
-import org.opennms.netmgt.model.DatabaseReportDateParm;
+import org.opennms.netmgt.dao.DatabaseReportConfigDao;
+import org.opennms.report.availability.svclayer.BatchReportService;
+import org.opennms.web.report.database.model.DatabaseReportCriteria;
 import org.opennms.web.svclayer.DatabaseReportService;
 import org.quartz.JobDetail;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
 import org.quartz.SimpleTrigger;
 import org.springframework.binding.message.MessageBuilder;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.webflow.execution.RequestContext;
 
-public class QuartzDatabaseReportService implements DatabaseReportService {
+public class QuartzDatabaseReportService implements DatabaseReportService, \
ApplicationContextAware {  
-
-    private static final String DATE_NAME = "endDate";
-    private static final String CATEGORY_NAME = "reportCategory";
-
     private static final String SUCCESS = "success";
     private static final String ERROR = "error";
-    private static final String CATEGORY_ERROR = 
-        "Report definition must have only one category parameter, with name " + \
                CATEGORY_NAME;
-    private static final String DATE_ERROR = 
-        "Report definition must have only one date parameter, with name " + \
DATE_NAME; +    private static final String PARAMETER_ERROR = 
+        "Report parameters did not match the definition for the report please \
contact your OpenNMS administrator";  private static final String SCHEDULER_ERROR = 
         "An exception occurred when scheduling the report";
     
-    JobDetail m_jobDetail;
-    
-    Scheduler m_scheduler;
+    private JobDetail m_jobDetail;
+    private Scheduler m_scheduler;
+    private ApplicationContext m_context;
 
     /* (non-Javadoc)
      * @see org.opennms.web.svclayer.DatabaseReportService#execute(org.opennms.web.svclayer.support.DatabaseReportCriteria)
 @@ -74,39 +69,34 @@
     
     public String execute(DatabaseReportCriteria criteria, RequestContext context) {
         
-        List <DatabaseReportCategoryParm> categories = criteria.getCategories();
-        if ((categories.size() != 1) || \
(!categories.get(0).getName().equals(CATEGORY_NAME))) { +        String \
reportServiceName = (String)context.getFlowScope().get("reportServiceName"); +        \
 +        BatchReportService reportService = \
(BatchReportService)m_context.getBean(reportServiceName); +        
+        if (reportService.validate(criteria.getReportParms(), \
                criteria.getReportId()) == false) {
             context.getMessageContext().addMessage(new MessageBuilder().error()
-                                                   \
.defaultText(CATEGORY_ERROR).build()); +                                              \
.defaultText(PARAMETER_ERROR).build());  return ERROR;
         } else {
-            List <DatabaseReportDateParm> dates = criteria.getDates();
-            if ((dates.size() != 1) || (!dates.get(0).getName().equals(DATE_NAME))) \
{ +            SimpleTrigger trigger = new SimpleTrigger("immediateTrigger",
+                                                      null,
+                                                      new Date(),
+                                                      null,
+                                                      0,
+                                                      0L);
+            trigger.getJobDataMap().put("criteria", criteria);
+            trigger.getJobDataMap().put("reportServiceName", reportServiceName);
+            try {
+                m_scheduler.scheduleJob(m_jobDetail, trigger);
+            } catch (SchedulerException e) {
+                e.printStackTrace();
                 context.getMessageContext().addMessage(new MessageBuilder().error()
-                                                       \
                .defaultText(DATE_ERROR).build());
-                return ERROR; 
-            } else {
-                SimpleTrigger trigger = new SimpleTrigger("immediateTrigger",
-                                                          null,
-                                                          new Date(),
-                                                          null,
-                                                          0,
-                                                          0L);
-                m_jobDetail.getJobDataMap().put("criteria", criteria);
-                try {
-                    m_scheduler.scheduleJob(m_jobDetail, trigger);
-                } catch (SchedulerException e) {
-                    e.printStackTrace();
-                    context.getMessageContext().addMessage(new \
                MessageBuilder().error()
-                                                           \
                .defaultText(SCHEDULER_ERROR).build());
-                    return ERROR;
-                }
-
-                
-                return SUCCESS;
+                                                       \
.defaultText(SCHEDULER_ERROR).build()); +                return ERROR;
             }
+
+            return SUCCESS;
         }
-        
     }
 
     public void setJobDetail(JobDetail reportJob) {
@@ -116,5 +106,9 @@
     public void setScheduler(Scheduler scheduler) {
         m_scheduler = scheduler;
     }
+    
+    public void setApplicationContext(ApplicationContext applicationContext) {
+        m_context = applicationContext;
+    }
 
 }

Added: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzSchedulerService.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzSchedulerService.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/QuartzSchedulerService.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,61 @@
+package org.opennms.web.svclayer.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+
+
+public class QuartzSchedulerService {
+    
+    private Scheduler m_scheduler;
+  
+    
+    public List<TriggerDescription> getAll() {
+        
+        String [] triggerGroups;
+        
+        List<TriggerDescription> triggerList = new ArrayList<TriggerDescription>();
+        
+        try {
+            triggerGroups = m_scheduler.getTriggerGroupNames();
+            for (int j = 0; j < triggerGroups.length; j++) {
+                triggerList.addAll(this.get(triggerGroups[j]));
+            }
+        } catch (SchedulerException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+
+        return triggerList;
+        
+        
+    }
+    
+    public List<TriggerDescription> get(String triggerGroup) {
+        
+        String [] triggers;
+        
+        List<TriggerDescription> triggerList = new ArrayList<TriggerDescription>();
+        
+        try {
+            triggers = m_scheduler.getTriggerNames(triggerGroup);
+            for (int j = 0; j < triggers.length; j++) {
+                TriggerDescription trigger = new TriggerDescription();
+                trigger.setGroup(triggerGroup);
+                trigger.setName(triggers[j]);
+                triggerList.add(trigger);
+             }
+        } catch (SchedulerException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+        return triggerList;
+
+        
+    }
+
+}

Added: opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/TriggerDescription.java
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/TriggerDescription.java	 \
                (rev 0)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/java/org/opennms/web/svclayer/support/TriggerDescription.java	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -0,0 +1,29 @@
+package org.opennms.web.svclayer.support;
+
+public class TriggerDescription {
+    
+    private String m_name;
+    private String m_group;
+    private String m_description;
+    public String getName() {
+        return m_name;
+    }
+    public void setName(String name) {
+        m_name = name;
+    }
+    public String getGroup() {
+        return m_group;
+    }
+    public void setGroup(String group) {
+        m_group = group;
+    }
+    public String getDescription() {
+        return m_description;
+    }
+    public void setDescription(String description) {
+        m_description = description;
+    }
+    
+    
+
+}

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -242,16 +242,10 @@
 		<ref local="schedulerFactory" />
 	</property>
 	<property name="jobDetail">
-		<ref local="onmsReportJobDetail" />
+		<ref local="batchReportJobDetail" />
 	</property>
   </bean>
   
-  <!-- this can be removed when the quartz service runs happily -->
-  
-  <bean id="DatabaseReportService" \
                class="org.opennms.web.svclayer.support.DefaultDatabaseReportService">
                
-    <property name="reportRunner" ref="onmsDatabaseReportService" />
-  </bean>
-  
   <bean id="schedulerFactory" \
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  <property \
name="schedulerName" value="databaseReport" />  <property name="dataSource" \
ref="dataSource" /> @@ -279,9 +273,9 @@
 		</property>
   </bean>
   
-  <bean id="onmsReportJobDetail" \
class="org.springframework.scheduling.quartz.JobDetailBean"> +  <bean \
id="batchReportJobDetail" \
class="org.springframework.scheduling.quartz.JobDetailBean">  <property \
                name="jobClass">
-		<value>org.opennms.web.report.database.ReportJob</value>
+		<value>org.opennms.web.report.database.BatchReportJob</value>
 	  </property>
   </bean> 
   

Modified: opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/databaseReportBuilder-flow.xml
 ===================================================================
--- opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/databaseReportBuilder-flow.xml	2009-11-30 \
                16:07:06 UTC (rev 15307)
+++ opennms/branches/feature-reportd/opennms-webapp/src/main/webapp/WEB-INF/flows/report/database/databaseReportBuilder/databaseReportBuilder-flow.xml	2009-11-30 \
21:04:18 UTC (rev 15308) @@ -9,6 +9,7 @@
 	<input name="reportId" required="true" />
 	
 	<on-start>
+		<evaluate expression="databaseReportConfigDao.getReportService(reportId)" \
result="flowScope.reportServiceName" />  <evaluate \
expression="databaseReportCriteriaService.getCriteria(reportId, currentUser.name)" \
result="flowScope.criteria" />  </on-start>
 	


@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site.

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list

To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic