You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Options.java 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*
  2. * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  3. * For details on use and redistribution please refer to the
  4. * LICENSE file included with these sources."
  5. */
  6. package org.apache.fop.apps;
  7. //sax
  8. import org.xml.sax.InputSource;
  9. //java
  10. import java.io.File;
  11. import java.io.InputStream;
  12. //fop
  13. import org.apache.fop.messaging.MessageHandler;
  14. import org.apache.fop.configuration.Configuration;
  15. import org.apache.fop.configuration.ConfigurationReader;
  16. /**
  17. * Options handles loading of configuration files and
  18. * additional setting of commandline options
  19. */
  20. public class Options {
  21. boolean errorDump = false;
  22. public Options ()
  23. throws FOPException
  24. {
  25. this.loadStandardConfiguration();
  26. initOptions ();
  27. }
  28. public Options (File userConfigFile)
  29. throws FOPException
  30. {
  31. this();
  32. this.loadUserconfiguration(userConfigFile);
  33. }
  34. public Options (CommandLineOptions clOptions)
  35. throws FOPException
  36. {
  37. this();
  38. this.setCommandLineOptions(clOptions);
  39. }
  40. //initializing option settings
  41. void initOptions () {
  42. if (Configuration.getBooleanValue("quiet").booleanValue()) {
  43. MessageHandler.setQuiet(true);
  44. }
  45. if (Configuration.getBooleanValue("debugMode").booleanValue()) {
  46. errorDump = true;
  47. }
  48. if (Configuration.getBooleanValue("dumpConfiguration").booleanValue()) {
  49. Configuration.put("dumpConfiguration","true");
  50. Configuration.dumpConfiguration();
  51. }
  52. }
  53. //setting clOptions
  54. void setCommandLineOptions(CommandLineOptions clOptions) {
  55. //load user configuration file,if there is one
  56. File userConfigFile = clOptions.getUserConfigFile();
  57. if (userConfigFile != null) {
  58. this.loadUserconfiguration(userConfigFile);
  59. }
  60. //debug mode
  61. if (clOptions.isDebugMode() != null) {
  62. errorDump = clOptions.isDebugMode().booleanValue();
  63. Configuration.put("debugMode",new Boolean(errorDump));
  64. }
  65. //show configuration settings
  66. boolean dumpConfiguration;
  67. if (clOptions.dumpConfiguration() != null) {
  68. dumpConfiguration = clOptions.dumpConfiguration().booleanValue();
  69. } else {
  70. dumpConfiguration = Configuration.getBooleanValue("dumpConfiguration").booleanValue();
  71. }
  72. if (dumpConfiguration) {
  73. Configuration.put("dumpConfiguration","true");
  74. Configuration.dumpConfiguration();
  75. System.exit(0);
  76. }
  77. //quiet mode
  78. if (clOptions.isQuiet() != null) {
  79. MessageHandler.setQuiet(clOptions.isQuiet().booleanValue());
  80. }
  81. //set base directory
  82. String baseDir = Configuration.getStringValue("baseDir");
  83. if (baseDir == null) {
  84. baseDir = new File(clOptions.getInputFile().getAbsolutePath()).getParent();
  85. Configuration.put("baseDir",baseDir);
  86. }
  87. if (errorDump) {
  88. MessageHandler.logln("base directory: " + baseDir);
  89. }
  90. }
  91. /**
  92. * loads standard configuration file and a user file, if it has been specified
  93. */
  94. public void loadStandardConfiguration()
  95. throws FOPException
  96. {
  97. String file = "config.xml";
  98. // the entry /conf/config.xml refers to a directory conf which is a sibling of org
  99. InputStream configfile =
  100. ConfigurationReader.class.getResourceAsStream("/conf/"+
  101. file);
  102. if (configfile == null) {
  103. throw new FOPException("can't find default configuration file");
  104. }
  105. if (errorDump) {
  106. MessageHandler.logln("reading default configuration file");
  107. }
  108. ConfigurationReader reader =
  109. new ConfigurationReader (new InputSource(configfile));
  110. if (errorDump) {
  111. reader.setDumpError(true);
  112. }
  113. reader.start();
  114. }
  115. public void loadUserconfiguration(String userConfigFile)
  116. {
  117. loadUserconfiguration(new File(userConfigFile));
  118. }
  119. public void loadUserconfiguration(File userConfigFile)
  120. {
  121. //read user configuration file
  122. if (userConfigFile != null) {
  123. MessageHandler.logln("reading user configuration file");
  124. ConfigurationReader reader = new ConfigurationReader (
  125. InputHandler.fileInputSource(userConfigFile));
  126. if (errorDump) {
  127. reader.setDumpError(true);
  128. }
  129. try {
  130. reader.start();
  131. } catch (org.apache.fop.apps.FOPException error) {
  132. MessageHandler.errorln("Can't find user configuration file " +
  133. userConfigFile);
  134. MessageHandler.errorln("using default values");
  135. if (errorDump) {
  136. reader.dumpError(error);
  137. }
  138. }
  139. }
  140. }
  141. }