📄 reportconfiguration.java
字号:
/**
* ========================================
* JFreeReport : a free Java report library
* ========================================
*
* Project Info: http://www.jfree.org/jfreereport/index.html
* Project Lead: Thomas Morgner;
*
* (C) Copyright 2000-2003, by Simba Management Limited and Contributors.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library 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.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* ------------------------
* ReportConfiguration.java
* ------------------------
* (C)opyright 2002-2003, by Thomas Morgner and Contributors.
*
* Original Author: Thomas Morgner;
* Contributor(s): David Gilbert (for Simba Management Limited);
*
* $Id: ReportConfiguration.java,v 1.12.2.1 2003/12/21 23:29:20 taqua Exp $
*
* Changes
* -------
* 06-Nov-2002 : Initial release
* 12-Nov-2002 : Added Javadoc comments (DG);
* 29-Nov-2002 : Fixed bugs reported by CheckStyle (DG)
* 05-Dec-2002 : Documentation
*
*/
package org.jfree.report.util;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
import java.util.TreeSet;
import org.jfree.report.Boot;
import org.jfree.report.modules.PackageManager;
import org.jfree.util.Configuration;
/**
* Global and local configurations for JFreeReport.
* <p>
* You can access the global configuration using this statement in your code:
* <p>
* <code>ReportConfiguration config = ReportConfiguration.getGlobalConfig();</code>
* <p>
* You can access the local configuration for a report using this:
* <p>
* <code>ReportConfiguration local = myReport.getReportConfiguration();
* <p>
* You can also specify the local configuration for a report via the XML report
* template file.
* <p>
* todo document the initialization order ...
* <p>
* The report configuration can be modified using the configuration editor
* in the gui-config module.
*
* @author Thomas Morgner
*/
public class ReportConfiguration implements Configuration, Serializable
{
/** The text aliasing configuration key. */
public static final String FONTRENDERER_USEALIASING
= "org.jfree.report.layout.fontrenderer.UseAliasing";
/** The text aliasing configuration default value. Is "false". */
public static final String FONTRENDERER_USEALIASING_DEFAULT = "false";
/** The G2 fontrenderer bug override configuration key. */
public static final String FONTRENDERER_ISBUGGY_FRC
= "org.jfree.report.layout.fontrenderer.IsBuggyFRC";
/** The G2 fontrenderer bug override. Is "false". */
public static final String FONTRENDERER_ISBUGGY_FRC_DEFAULT = "false";
/** The property key, which defines whether to be verbose when generating the content. */
public static final String PRINT_OPERATION_COMMENT
= "org.jfree.report.PrintOperationComment";
/** The default 'print operation comment' property value. */
public static final String PRINT_OPERATION_COMMENT_DEFAULT = "false";
/** The property key, which defines whether errors abort the report generation. */
public static final String STRICT_ERRORHANDLING
= "org.jfree.report.StrictErrorHandling";
/** The default 'strict errorhandling' property value. */
public static final String STRICT_ERRORHANDLING_DEFAULT = "true";
/** The 'warn on invalid columns' property key. */
public static final String WARN_INVALID_COLUMNS
= "org.jfree.report.WarnInvalidColumns";
/** The default 'warn on invalid columns' property value. */
public static final String WARN_INVALID_COLUMNS_DEFAULT = "false";
/** The 'disable logging' property key. */
public static final String DISABLE_LOGGING
= "org.jfree.report.NoDefaultDebug";
/** The 'no-printer-available' property key. */
public static final String NO_PRINTER_AVAILABLE
= "org.jfree.report.NoPrinterAvailable";
/** The default 'disable logging' property value. */
public static final String DISABLE_LOGGING_DEFAULT = "false";
/** The 'log level' property key. */
public static final String LOGLEVEL
= "org.jfree.report.LogLevel";
/** The default 'log level' property value. */
public static final String LOGLEVEL_DEFAULT = "Info";
/** The 'log target' property key. */
public static final String LOGTARGET = "org.jfree.report.LogTarget";
/** The default 'log target' property value. */
public static final String LOGTARGET_DEFAULT = SystemOutLogTarget.class.getName();
/**
* The default resourcebundle that should be used for ResourceFileFilter.
* This property must be applied by the parser.
*/
public static final String REPORT_RESOURCE_BUNDLE_KEY
= "org.jfree.report.ResourceBundle";
/**
* Helper method to read the platform default encoding from the VM's system properties.
* @return the contents of the system property "file.encoding".
*/
public static String getPlatformDefaultEncoding()
{
try
{
return System.getProperty("file.encoding", "Cp1252");
}
catch (SecurityException se)
{
return "Cp1252";
}
}
/** Storage for the configuration properties. */
private final Properties configuration;
/** The parent configuration (null if this is the root configuration). */
private transient ReportConfiguration parentConfiguration;
/** The global configuration. */
private static transient ReportConfiguration globalConfig;
/**
* Default constructor.
*/
protected ReportConfiguration()
{
configuration = new Properties();
}
/**
* Creates a new report configuration.
*
* @param globalConfig the global configuration.
*/
public ReportConfiguration(final ReportConfiguration globalConfig)
{
this();
parentConfiguration = globalConfig;
}
/**
* Returns the configuration property with the specified key.
*
* @param key the property key.
*
* @return the property value.
*/
public String getConfigProperty(final String key)
{
return getConfigProperty(key, null);
}
/**
* Returns the configuration property with the specified key
* (or the specified default value if there is no such property).
* <p>
* If the property is not defined in this configuration, the code
* will lookup the property in the parent configuration.
*
* @param key the property key.
* @param defaultValue the default value.
*
* @return the property value.
*/
public String getConfigProperty(final String key, final String defaultValue)
{
String value = configuration.getProperty(key);
if (value == null)
{
if (isRootConfig())
{
value = defaultValue;
}
else
{
value = parentConfiguration.getConfigProperty(key, defaultValue);
}
}
return value;
}
/**
* Sets a configuration property.
*
* @param key the property key.
* @param value the property value.
*/
public void setConfigProperty(final String key, final String value)
{
if (key == null)
{
throw new NullPointerException();
}
if (value == null)
{
configuration.remove(key);
}
else
{
configuration.setProperty(key, value);
}
}
/**
* Returns true if this object has no parent.
*
* @return true, if this report is the root configuration, false otherwise.
*/
private boolean isRootConfig()
{
return parentConfiguration == null;
}
/**
* Returns the log level.
*
* @return the log level.
*/
public String getLogLevel()
{
return getConfigProperty(LOGLEVEL, LOGLEVEL_DEFAULT);
}
/**
* Sets the log level, which is read from the global report configuration at
* the point that the classloader loads the {@link Log} class.
* <p>
* Valid log levels are:
*
* <ul>
* <li><code>"Error"</code> - error messages;</li>
* <li><code>"Warn"</code> - warning messages;</li>
* <li><code>"Info"</code> - information messages;</li>
* <li><code>"Debug"</code> - debug messages;</li>
* </ul>
*
* Notes:
* <ul>
* <li>the setting is not case sensitive.</li>
* <li>changing the log level after the {@link Log} class has been
* loaded will have no effect.</li>
* <li>to turn of logging altogether, use the {@link #setDisableLogging} method.</li>
* </ul>
*
* @param level the new log level.
*/
public void setLogLevel(final String level)
{
setConfigProperty(LOGLEVEL, level);
}
/**
* Returns <code>true</code> if logging is disabled, and <code>false</code> otherwise.
*
* @return true, if logging is completly disabled, false otherwise.
*/
public boolean isDisableLogging()
{
return getConfigProperty
(DISABLE_LOGGING, DISABLE_LOGGING_DEFAULT).equalsIgnoreCase("true");
}
/**
* Sets the flag that disables logging.
* <p>
* To switch off logging globally, you can use the following code:
* <p>
* <code>ReportConfiguration.getGlobalConfig().setDisableLogging(true);</code>
*
* @param disableLogging the flag.
*/
public void setDisableLogging(final boolean disableLogging)
{
setConfigProperty(DISABLE_LOGGING, String.valueOf(disableLogging));
}
/**
* Returns the collection of properties for the configuration.
*
* @return the properties.
*/
protected Properties getConfiguration()
{
return configuration;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -