/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * 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 Lesser General Public License for more details. * * Copyright 2006 - 2009 Pentaho Corporation. All rights reserved. * */ package org.pentaho.platform.plugin.action.jfreereport.helper; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Element; import org.pentaho.platform.api.engine.IApplicationContext; import org.pentaho.platform.api.engine.IParameterProvider; import org.pentaho.platform.api.engine.ISystemSettings; import org.pentaho.platform.engine.core.system.PentahoSystem; import org.pentaho.reporting.engine.classic.core.util.PropertyLookupParser; import org.pentaho.reporting.libraries.base.config.Configuration; import org.pentaho.reporting.libraries.base.config.DefaultConfiguration; /** * Creation-Date: 05.07.2007, 19:48:16 * * @author Thomas Morgner */ public class PentahoReportConfiguration extends PropertyLookupParser implements Configuration { private static final long serialVersionUID = -1191667017348135395L; private DefaultConfiguration config; public PentahoReportConfiguration() { setOpeningBraceChar('('); setClosingBraceChar(')'); config = new DefaultConfiguration(); final ISystemSettings cfg = PentahoSystem.getSystemSettings(); if (cfg == null) { return; } final List reportSettings = cfg.getSystemSettings("report-config/entry");//$NON-NLS-1$ for (int i = 0; i < reportSettings.size(); i++) { final Element element = (Element) reportSettings.get(i); final Attribute name = element.attribute("name");//$NON-NLS-1$ final Attribute value = element.attribute("value");//$NON-NLS-1$ if ((name != null) && (value != null)) { this.config.setConfigProperty(name.getValue(), translateAndLookup(value.getValue())); } } } @Override public Object clone() throws CloneNotSupportedException { final PentahoReportConfiguration cfg = (PentahoReportConfiguration) super.clone(); cfg.config = (DefaultConfiguration) cfg.clone(); return cfg; } public Iterator findPropertyKeys(final String prefix) { return config.findPropertyKeys(prefix); } public Enumeration getConfigProperties() { return config.getConfigProperties(); } public String getConfigProperty(final String key) { return getConfigProperty(key, null); } public String getConfigProperty(final String key, final String defaultvalue) { return config.getConfigProperty(key, defaultvalue); } @Override protected String lookupVariable(final String property) { final IApplicationContext context = PentahoSystem.getApplicationContext(); if (context != null) { final String contextParam = context.getProperty(property); if (contextParam != null) { return contextParam; } } final IParameterProvider globalParameters = PentahoSystem.getGlobalParameters(); if (globalParameters != null) { final String globalParam = globalParameters.getStringParameter(property, null); if (globalParam != null) { return globalParam; } } final String systemSetting = PentahoSystem.getSystemSetting(property, null); if (systemSetting != null) { return systemSetting; } if (context != null) { if ("base-url".equals(property))//$NON-NLS-1$ { return context.getBaseUrl(); } } return null; } }