aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache/fop/apps/Options.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/fop/apps/Options.java')
-rw-r--r--src/org/apache/fop/apps/Options.java162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/org/apache/fop/apps/Options.java b/src/org/apache/fop/apps/Options.java
new file mode 100644
index 000000000..893e7bfd4
--- /dev/null
+++ b/src/org/apache/fop/apps/Options.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+ * For details on use and redistribution please refer to the
+ * LICENSE file included with these sources."
+ */
+
+
+package org.apache.fop.apps;
+
+//sax
+import org.xml.sax.InputSource;
+
+//java
+import java.io.File;
+import java.io.InputStream;
+
+//fop
+import org.apache.fop.messaging.MessageHandler;
+import org.apache.fop.configuration.Configuration;
+import org.apache.fop.configuration.ConfigurationReader;
+
+/**
+ * Options handles loading of configuration files and
+ * additional setting of commandline options
+ */
+
+public class Options {
+ boolean errorDump = false;
+
+ public Options () {
+ this.loadStandardConfiguration();
+ initOptions ();
+ }
+
+ public Options (File userConfigFile) {
+ this();
+ this.loadUserconfiguration(userConfigFile);
+ }
+
+ public Options (CommandLineOptions clOptions) {
+ this();
+ this.setCommandLineOptions(clOptions);
+ }
+
+ //initializing option settings
+ void initOptions () {
+ if (Configuration.getBooleanValue("quiet").booleanValue()) {
+ MessageHandler.setQuiet(true);
+ }
+ if (Configuration.getBooleanValue("debugMode").booleanValue()) {
+ errorDump = true;
+ }
+ if (Configuration.getBooleanValue("dumpConfiguration").booleanValue()) {
+ Configuration.put("dumpConfiguration","true");
+ Configuration.dumpConfiguration();
+ }
+ }
+
+ //setting clOptions
+ void setCommandLineOptions(CommandLineOptions clOptions) {
+ //load user configuration file,if there is one
+ File userConfigFile = clOptions.getUserConfigFile();
+ if (userConfigFile != null) {
+ this.loadUserconfiguration(userConfigFile);
+ }
+
+ //debug mode
+ if (clOptions.isDebugMode() != null) {
+ errorDump = clOptions.isDebugMode().booleanValue();
+ Configuration.put("errorDump",new Boolean(errorDump));
+ }
+
+ //show configuration settings
+ boolean dumpConfiguration;
+ if (clOptions.dumpConfiguration() != null) {
+ dumpConfiguration = clOptions.dumpConfiguration().booleanValue();
+ } else {
+ dumpConfiguration = Configuration.getBooleanValue("dumpConfiguration").booleanValue();
+ }
+ if (dumpConfiguration) {
+ Configuration.put("dumpConfiguration","true");
+ Configuration.dumpConfiguration();
+ System.exit(0);
+ }
+
+ //quiet mode
+ if (clOptions.isQuiet() != null) {
+ MessageHandler.setQuiet(clOptions.isQuiet().booleanValue());
+ }
+
+ //set base directory
+ String baseDir = Configuration.getStringValue("baseDir");
+ if (baseDir == null) {
+ baseDir = new File(clOptions.getInputFile().getAbsolutePath()).getParent();
+ Configuration.put("baseDir",baseDir);
+ }
+ if (errorDump) {
+ MessageHandler.logln("base directory: " + baseDir);
+ }
+ }
+
+ /**
+ * loads standard configuration file and a user file, if it has been specified
+ */
+ public void loadStandardConfiguration() {
+ String file = "config.xml";
+
+ // the entry /conf/config.xml refers to a directory conf which is a sibling of org
+ InputStream configfile =
+ ConfigurationReader.class.getResourceAsStream("/conf/"+
+ file);
+ if (configfile == null) {
+ MessageHandler.errorln("Fatal error: can't find default configuration file");
+ System.exit(1);
+ }
+ if (errorDump) {
+ MessageHandler.logln("reading default configuration file");
+ }
+ ConfigurationReader reader =
+ new ConfigurationReader (new InputSource(configfile));
+ if (errorDump) {
+ reader.setDumpError(true);
+ }
+ try {
+ reader.start();
+ } catch (org.apache.fop.apps.FOPException error) {
+ MessageHandler.errorln("Fatal Error: Can't process default configuration file. \nProbably it is not well-formed.");
+ if (errorDump) {
+ reader.dumpError(error);
+ }
+ System.exit(1);
+ }
+ }
+
+ public void loadUserconfiguration(String userConfigFile) {
+ loadUserconfiguration(new File(userConfigFile));
+ }
+
+ public void loadUserconfiguration(File userConfigFile) {
+ //read user configuration file
+ if (userConfigFile != null) {
+ MessageHandler.logln("reading user configuration file");
+ ConfigurationReader reader = new ConfigurationReader (
+ InputHandler.fileInputSource(userConfigFile));
+ if (errorDump) {
+ reader.setDumpError(true);
+ }
+ try {
+ reader.start();
+ } catch (org.apache.fop.apps.FOPException error) {
+ MessageHandler.errorln(
+ "Can't find user configuration file " +
+ userConfigFile);
+ MessageHandler.errorln("using default values");
+ if (errorDump) {
+ reader.dumpError(error);
+ }
+ }
+ }
+ }
+}
+