/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2009-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) 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 3 of the License, * or (at your option) any later version. * * OpenNMS(R) 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 OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.report.configuration; import java.io.IOException; import java.util.Date; import org.apache.log4j.Logger; import org.opennms.report.ReportMailer; import org.opennms.reporting.availability.render.ReportRenderException; import org.opennms.reporting.availability.render.ReportRenderer; /** * <p>ConfigurationReportRunner class.</p> * * @author ranger * @version $Id: $ */ public class ConfigurationReportRunner implements Runnable { String theDate; String reportFormat; String reportEmail; String user; Date reportRequestDate; ConfigurationReportCalculator calculator; ReportRenderer m_htmlReportRenderer; ReportRenderer m_nullReportRenderer; /** * <p>getNullReportRenderer</p> * * @return a {@link org.opennms.reporting.availability.render.ReportRenderer} object. */ public ReportRenderer getNullReportRenderer() { return m_nullReportRenderer; } /** * <p>setNullReportRenderer</p> * * @param nullReportRenderer a {@link org.opennms.reporting.availability.render.ReportRenderer} object. */ public void setNullReportRenderer(ReportRenderer nullReportRenderer) { m_nullReportRenderer = nullReportRenderer; } /** * <p>getHtmlReportRenderer</p> * * @return a {@link org.opennms.reporting.availability.render.ReportRenderer} object. */ public ReportRenderer getHtmlReportRenderer() { return m_htmlReportRenderer; } /** * <p>setHtmlReportRenderer</p> * * @param htmlReportRenderer a {@link org.opennms.reporting.availability.render.ReportRenderer} object. */ public void setHtmlReportRenderer(ReportRenderer htmlReportRenderer) { m_htmlReportRenderer = htmlReportRenderer; } /** * <p>Getter for the field <code>theDate</code>.</p> * * @return a {@link java.lang.String} object. */ public String getTheDate() { return theDate; } /** * <p>Setter for the field <code>theDate</code>.</p> * * @param theDate a {@link java.lang.String} object. */ public void setTheDate(String theDate) { this.theDate = theDate; } /** * <p>Getter for the field <code>reportFormat</code>.</p> * * @return a {@link java.lang.String} object. */ public String getReportFormat() { return reportFormat; } /** * <p>Setter for the field <code>reportFormat</code>.</p> * * @param reportFormat a {@link java.lang.String} object. */ public void setReportFormat(String reportFormat) { this.reportFormat = reportFormat; } /** * <p>Getter for the field <code>reportEmail</code>.</p> * * @return a {@link java.lang.String} object. */ public String getReportEmail() { return reportEmail; } /** * <p>Setter for the field <code>reportEmail</code>.</p> * * @param reportEmail a {@link java.lang.String} object. */ public void setReportEmail(String reportEmail) { this.reportEmail = reportEmail; } /** * <p>Getter for the field <code>user</code>.</p> * * @return a {@link java.lang.String} object. */ public String getUser() { return user; } /** * <p>Setter for the field <code>user</code>.</p> * * @param user a {@link java.lang.String} object. */ public void setUser(String user) { this.user = user; } /** * <p>Getter for the field <code>reportRequestDate</code>.</p> * * @return a {@link java.util.Date} object. */ public Date getReportRequestDate() { return reportRequestDate; } /** * <p>Setter for the field <code>reportRequestDate</code>.</p> * * @param reportRequestDate a {@link java.util.Date} object. */ public void setReportRequestDate(Date reportRequestDate) { this.reportRequestDate = reportRequestDate; } /** * <p>getConfigurationReportCalculator</p> * * @return a {@link org.opennms.report.configuration.ConfigurationReportCalculator} object. */ public ConfigurationReportCalculator getConfigurationReportCalculator() { return calculator; } /** * <p>setConfigurationReportCalculator</p> * * @param configurationReportCalculator a {@link org.opennms.report.configuration.ConfigurationReportCalculator} object. */ public void setConfigurationReportCalculator( ConfigurationReportCalculator configurationReportCalculator) { calculator = configurationReportCalculator; } /** * <p>run</p> */ public void run() { log().debug("run: getting configuration report on Date ["+ theDate +"]. Requested by User: " + user + "on Date " + reportRequestDate.toString()); ReportRenderer renderer; calculator.setReportRequestDate(reportRequestDate); calculator.setTheDate(theDate); calculator.setUser(user); if (reportFormat.compareTo("pdftype") == 0){ log().debug("run: generating pdf is still not supported :( sending xml"); renderer = m_nullReportRenderer; } else { log().debug("runRancidListReport generating html"); renderer = m_htmlReportRenderer; } try { calculator.calculate(); calculator.writeXML(); String outputFile = calculator.getOutputFileName(); log().debug("Written Configuration Report as XML to " + outputFile); renderer.setInputFileName(outputFile); log().debug("rendering XML " + outputFile + " as " + renderer.getOutputFileName()); renderer.render(); ReportMailer mailer = new ReportMailer( reportEmail, renderer.getBaseDir() + renderer.getOutputFileName(), "OpenNMS Configuration Report"); mailer.send(); } catch (ConfigurationCalculationException ce) { log().fatal("Unable to calculate report data ", ce); } catch (ReportRenderException re) { log().fatal("Unable to render report ", re); } catch (IOException ioe) { log().fatal("Unable to render report ", ioe); } } private static Logger log() { return Logger.getLogger("Rancid"); } }