/* * Copyright (C) 2003 Erik Swenson - erik@oreports.com * * 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 reserved 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. * */ package org.efs.openreports.providers; import org.apache.struts2.ServletActionContext; import org.apache.log4j.Logger; import org.efs.openreports.objects.ORProperty; public class DirectoryProvider { protected static Logger log = Logger.getLogger(DirectoryProvider.class.getName()); private String reportDirectory; private String reportImageDirectory; private String reportGenerationDirectory; private String tempDirectory; private String separator = System.getProperty("file.separator"); private PropertiesProvider propertiesProvider; public DirectoryProvider(PropertiesProvider propertiesProvider) throws ProviderException { this.propertiesProvider = propertiesProvider; init(); } protected void init() throws ProviderException { log.info("Loading BaseDirectory from OR_PROPERTIES table."); String baseDirectory = null; ORProperty property = propertiesProvider.getProperty(ORProperty.BASE_DIRECTORY); if (property != null) baseDirectory = property.getValue(); if (baseDirectory == null || baseDirectory.trim().length() < 1) { log.info("BaseDirectory not set in OR_PROPERTIES table. Trying to get path from ServletContext."); try { baseDirectory = ServletActionContext.getServletContext().getRealPath(""); baseDirectory = baseDirectory + separator + "reports"; } catch (NullPointerException npe) { log.info("ServletActionContext not available."); baseDirectory = "."; } } reportDirectory = baseDirectory; if (!reportDirectory.endsWith(separator)) reportDirectory +=separator; log.info("Report Directory: " + reportDirectory); reportImageDirectory = reportDirectory + "images" + separator; log.info("Report Image Directory: " + reportImageDirectory); //set temp directory path for report virtualization and image generation property = propertiesProvider.getProperty(ORProperty.TEMP_DIRECTORY); if (property != null && property.getValue() != null && property.getValue().trim().length() > 0) { tempDirectory = property.getValue(); if (!tempDirectory.endsWith(separator)) tempDirectory +=separator; log.info("TempDirectory: " + tempDirectory); } //set report generation directory path for storing generated reports property = propertiesProvider.getProperty(ORProperty.REPORT_GENERATION_DIRECTORY); if (property != null && property.getValue() != null && property.getValue().trim().length() > 0) { reportGenerationDirectory = property.getValue(); if (!reportGenerationDirectory.endsWith(separator)) reportGenerationDirectory +=separator; log.info("ReportGenerationDirectory: " + reportGenerationDirectory); } log.info("Created"); } public String getReportDirectory() { return reportDirectory; } public void setReportDirectory(String reportDirectory) { this.reportDirectory = reportDirectory; if (!reportDirectory.endsWith(separator)) reportDirectory +=separator; reportImageDirectory = reportDirectory + "images" + separator; log.info("Report Directory Changed To: " + reportDirectory); } public String getReportImageDirectory() { return reportImageDirectory; } public String getTempDirectory() { return tempDirectory; } public void setTempDirectory(String tempDirectory) { this.tempDirectory = tempDirectory; if (!tempDirectory.endsWith(separator)) tempDirectory +=separator; log.info("TempDirectory Changed To: " + tempDirectory); } public String getReportGenerationDirectory() { return reportGenerationDirectory; } public void setReportGenerationDirectory(String reportGenerationDirectory) { this.reportGenerationDirectory = reportGenerationDirectory; if (!reportGenerationDirectory.endsWith(separator)) reportGenerationDirectory +=separator; log.info("ReportGenerationDirectory Changed To: " + reportGenerationDirectory); } public void setPropertiesProvider(PropertiesProvider propertiesProvider) { this.propertiesProvider = propertiesProvider; } }