public class Settings
extends java.lang.Object
Settings are typed variables identified with their case-sensitive name.
When you set the value of a setting, the value object you supply must be
of the correct type. See the description of the TYPE_...
to see the available setting types.
Methods that change setting values have a variation
that require String
value(s) instead of Object
(s).
These methods should be used when you get the setting values from text-only
sources, such as command-line option values, XML attributes or
.properties file. To demonstrate the difference, assume you have
string value "a, b, c"
. If you try to use this value for a
setting of type list, the normal setter method will interpret the value
as a list of length 1, that stores string "a, b, c"
. If you
try to use the same value with the string version of the same method, it
will interpret the string as a list of length 3, that stores 3 strings,
"a"
, "b"
, and "c"
.
Notes:
define(java.lang.String, fmpp.setting.Settings.SettingType, boolean, boolean)
.
Standard settings (the settings documented in the FMPP Manual) are
initially already defined.
SettingException
, then it is ensured that
the method doesn't change the Settings
object. For
example, with add(Map)
, either all settings in the map will be
successfully set, or neither will be set.
You can execute the processing session described by the setting with
execute()
.
Modifier and Type | Class and Description |
---|---|
protected static class |
Settings.SettingType
Represents the type of the value of a setting.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_CFG_FILE_NAME
Primary default file name.
|
static java.lang.String |
DEFAULT_CFG_FILE_NAME_OLD
Secondary (legacy) default file name.
|
static java.lang.String |
NAME_ALWAYS_CREATE_DIRECTORIES |
static java.lang.String |
NAME_APPEND_LOG_FILE |
static java.lang.String |
NAME_BOOLEAN_FORMAT |
static java.lang.String |
NAME_BORDERS |
static java.lang.String |
NAME_CASE_SENSITIVE |
static java.lang.String |
NAME_COLUMNS |
static java.lang.String |
NAME_CONFIGURATION_BASE |
static java.lang.String |
NAME_DATA |
static java.lang.String |
NAME_DATA_ROOT |
static java.lang.String |
NAME_DATE_FORMAT |
static java.lang.String |
NAME_DATETIME_FORMAT |
static java.lang.String |
NAME_ECHO_FORMAT |
static java.lang.String |
NAME_EXPERT |
static java.lang.String |
NAME_FREEMARKER_INCOMPATIBLE_IMPROVEMENTS |
static java.lang.String |
NAME_FREEMARKER_LINKS |
static java.lang.String |
NAME_IGNORE_CVS_FILES |
static java.lang.String |
NAME_IGNORE_SVN_FILES |
static java.lang.String |
NAME_IGNORE_TEMPORARY_FILES |
static java.lang.String |
NAME_INHERIT_CONFIGURATION |
static java.lang.String |
NAME_INTERPOLATION_SYNTAX |
static java.lang.String |
NAME_LOCAL_DATA |
static java.lang.String |
NAME_LOCALE |
static java.lang.String |
NAME_LOG_FILE |
static java.lang.String |
NAME_MAP_COMMON_EXTENSIONS_TO_OUTPUT_FORMATS |
static java.lang.String |
NAME_MODES |
static java.lang.String |
NAME_NUMBER_FORMAT |
static java.lang.String |
NAME_OBJECT_WRAPPER |
static java.lang.String |
NAME_OUTPUT_ENCODING |
static java.lang.String |
NAME_OUTPUT_FILE |
static java.lang.String |
NAME_OUTPUT_FORMAT |
static java.lang.String |
NAME_OUTPUT_FORMATS_BY_PATH |
static java.lang.String |
NAME_OUTPUT_ROOT |
static java.lang.String |
NAME_PRINT_STACK_TRACE |
static java.lang.String |
NAME_QUIET |
static java.lang.String |
NAME_RECOMMENDED_DEFAULTS |
static java.lang.String |
NAME_REMOVE_EXTENSIONS |
static java.lang.String |
NAME_REMOVE_FREEMARKER_EXTENSIONS |
static java.lang.String |
NAME_REMOVE_POSTFIXES |
static java.lang.String |
NAME_REPLACE_EXTENSIONS |
static java.lang.String |
NAME_SKIP_UNCHANGED |
static java.lang.String |
NAME_SNIP |
static java.lang.String |
NAME_SOURCE_ENCODING |
static java.lang.String |
NAME_SOURCE_ROOT |
static java.lang.String |
NAME_SOURCES |
static java.lang.String |
NAME_SQL_DATE_AND_TIME_TIME_ZONE |
static java.lang.String |
NAME_STOP_ON_ERROR |
static java.lang.String |
NAME_TAG_SYNTAX |
static java.lang.String |
NAME_TEMPLATE_DATA |
static java.lang.String |
NAME_TIME_FORMAT |
static java.lang.String |
NAME_TIME_ZONE |
static java.lang.String |
NAME_TURNS |
static java.lang.String |
NAME_URL_ESCAPING_CHARSET |
static java.lang.String |
NAME_VALIDATE_XML |
static java.lang.String |
NAME_XML_CATALOG_FILES |
static java.lang.String |
NAME_XML_CATALOG_PREFER |
static java.lang.String |
NAME_XML_RENDERINGS |
static java.lang.String |
NAME_XPATH_ENGINE |
static java.lang.String |
OLD_NAME_REMOVE_EXTENSION |
static java.lang.String |
OLD_NAME_REMOVE_POSTFIX |
static java.lang.String |
OLD_NAME_REPLACE_EXTENSION |
static Settings.SettingType |
TYPE_ANY
Any object.
|
static Settings.SettingType |
TYPE_BOOLEAN
Boolean setting type.
|
static Settings.SettingType |
TYPE_CFG_RELATIVE_PATH
"Configuration relative path" setting type.
|
static Settings.SettingType |
TYPE_CFG_RELATIVE_PATHS
"Configuration relative paths" setting type.
|
static Settings.SettingType |
TYPE_DATA_MODEL
Data model setting type.
|
static Settings.SettingType |
TYPE_HASH
Hash setting type.
|
static Settings.SettingType |
TYPE_HASH_OF_SEQUENCE_OF_CFG_RELATIVE_PATHS
Hash-of-configuration-relative-paths setting type.
|
static Settings.SettingType |
TYPE_INTEGER
Integer setting type.
|
static Settings.SettingType |
TYPE_LOCAL_DATA_MODEL
Local data model setting type.
|
static Settings.SettingType |
TYPE_SEQUENCE
Sequence setting type.
|
static Settings.SettingType |
TYPE_STRING
String setting type.
|
static Settings.SettingType |
TYPE_UNRESOLVED_CFG_RELATIVE_PATHS
"Unresolved configuration relative paths" setting type.
|
static java.lang.String |
VALUE_GLOBAL_DEFAULT |
static java.lang.String |
VALUE_HOST |
static java.lang.String |
VALUE_INTERPOLATION_SYNTAX_DOLLAR |
static java.lang.String |
VALUE_INTERPOLATION_SYNTAX_LEGACY |
static java.lang.String |
VALUE_INTERPOLATION_SYNTAX_SQUARE_BRACKET |
static java.lang.String |
VALUE_NONE |
static java.lang.String |
VALUE_OBJECTWRAPPER_SHARED_BEANS_WRAPPER |
static java.lang.String |
VALUE_OUTPUT |
static java.lang.String |
VALUE_REALLY_QUIET |
static java.lang.String |
VALUE_SOURCE |
static java.lang.String |
VALUE_TAG_SYNTAX_ANGLE_BRACKET |
static java.lang.String |
VALUE_TAG_SYNTAX_AUTO_DETECT |
static java.lang.String |
VALUE_TAG_SYNTAX_SQUARE_BRACKET |
static java.lang.String |
VALUE_XML_CATALOG_PREFER_PUBLIC |
static java.lang.String |
VALUE_XML_CATALOG_PREFER_SYSTEM |
Constructor and Description |
---|
Settings(java.io.File baseDir)
Creates a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
add(java.util.Map settingMap)
Adds all name-value pairs stored in the map with
add(String, Object) . |
void |
add(java.lang.String name,
java.lang.Object value)
Adds a setting value.
|
void |
addDefault(java.lang.String name,
java.lang.Object value)
Adds a setting value with low priority.
|
void |
addDefaults(java.util.Map settingMap)
Adds all entries stored in the map with
addDefault(String, Object) . |
void |
addDefaultsWithStrings(java.util.Properties props)
Same as
addDefaults(Map) , but uses a Properties
object, so the values are strings. |
void |
addDefaultWithString(java.lang.String name,
java.lang.String value)
Same as
addDefault(String, Object) , but uses string value. |
void |
addProgressListener(ProgressListener pl)
Adds a progress listener.
|
void |
addWithString(java.lang.String name,
java.lang.String value)
Same as
add(String, Object) , but uses string value that will be interpreted by
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean) . |
void |
addWithStrings(java.util.Properties props)
Same as
add(Map) , but uses a Properties object,
so the values are strings. |
void |
clearAttribues()
Removes all engine attributes.
|
void |
clearProgressListeners()
Removes all progress listeneres.
|
void |
define(java.lang.String name,
Settings.SettingType type,
boolean merge,
boolean forceStr)
Defines a new setting.
|
protected void |
doProcessing(Engine eng,
java.io.File[] sources,
java.io.File sourceFile,
java.io.File outputFile)
Executes the processing session(s) on the
Engine level,
using the already initialized Engine object. |
java.lang.String |
dump()
Dumps the current content of this object for debugging purposes.
|
void |
execute()
Executes a processing session based on the setting values.
|
static void |
fixVersion08SettingNames(java.util.Properties props)
Backward compatibility hack: renames properties that use
pre-FMPP 0.9.0 names of settings.
|
java.lang.Object |
get(java.lang.String name)
Gets the current value of a setting.
|
static java.lang.String |
getDashedName(java.lang.String name)
Converts mixed-case setting name to dashed form,
like sourceRoot to source-root.
|
static java.io.File |
getDefaultConfigurationFile(java.io.File dir)
Returns the default configuration file in the directory.
|
boolean |
getDontTraverseDirectories() |
java.lang.Object |
getEngineAttribute(java.lang.String name)
Reads an engine attribute.
|
java.util.Iterator |
getNames()
Lists the names of settings that were set.
|
static java.util.Iterator |
getStandardSettingNames()
Returns names of the standard (not user-defined) settings.
|
boolean |
isDefined(java.lang.String name)
Returns if a setting with the given name is defined (do not mix it up
with being set).
|
void |
load(java.io.File cfgFile)
Loads settings from a configuration file.
|
void |
loadDefaults(java.io.File cfgFile)
Same as
load , except that it adds the settings with
addDefaults(Map) . |
static int |
quietSettingValueToInt(java.lang.String value,
java.lang.String name)
Returns 0 for verbose mode, 1 for quiet mode, 2 for really-quiet mode.
|
java.lang.Object |
remove(java.lang.String name)
Removes a setting value; after this
get(String) will return null . |
java.lang.Object |
removeAttribute(java.lang.String name)
Removes an engine attribute.
|
void |
set(java.util.Map settingValues)
Calls
set(String, Object) for each name-value pair of the Map . |
void |
set(java.lang.String name,
boolean value)
Convenience method for setting a
Boolean value. |
void |
set(java.lang.String name,
int value)
Convenience method for setting an
Integer value. |
void |
set(java.lang.String name,
java.lang.Object value)
Sets the value of a setting.
|
void |
setDefault(java.lang.String name,
boolean value)
Convenience method for setting a
Boolean value; see setDefault(String, Object) . |
void |
setDefault(java.lang.String name,
int value)
Convenience method for setting an
Integer value; see setDefault(String, Object) . |
void |
setDefault(java.lang.String name,
java.lang.Object value)
Sets the value of a setting if the value wasn't set yet.
|
void |
setDefaults(java.util.Map settingValues)
|
void |
setDefaultsWithStrings(java.util.Properties props)
Similar to
setWithStrings(Properties) , but calls setDefaultWithString(String, String) instead
of setWithString(String, String) . |
void |
setDefaultWithString(java.lang.String name,
java.lang.String value)
Same as
setDefault(String, Object) , but uses a string value that will be parsed with
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean) . |
void |
setDontTraverseDirectories(boolean dontTraverseDirs)
|
java.lang.Object |
setEngineAttribute(java.lang.String name,
java.lang.Object value)
Sets an engine attribute.
|
void |
setWithString(java.lang.String name,
java.lang.String value)
Same as
set(String, Object) , but uses string value that will be parsed with
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean) . |
void |
setWithStrings(java.util.Properties props)
Calls
setWithString(String, String) for each name-value pair of the Properties . |
void |
trimValues(java.util.Properties props)
Trims all property values.
|
void |
undashNames(java.util.Properties props)
Converts legacy dashed setting names to the standard format, as
source-root to sourceRoot . |
public static final java.lang.String NAME_SKIP_UNCHANGED
public static final java.lang.String NAME_TURNS
public static final java.lang.String NAME_SOURCES
public static final java.lang.String NAME_SOURCE_ROOT
public static final java.lang.String NAME_OUTPUT_ROOT
public static final java.lang.String NAME_OUTPUT_FILE
public static final java.lang.String NAME_DATA_ROOT
public static final java.lang.String NAME_OBJECT_WRAPPER
public static final java.lang.String NAME_RECOMMENDED_DEFAULTS
public static final java.lang.String NAME_FREEMARKER_INCOMPATIBLE_IMPROVEMENTS
public static final java.lang.String NAME_FREEMARKER_LINKS
public static final java.lang.String NAME_INHERIT_CONFIGURATION
public static final java.lang.String NAME_MODES
public static final java.lang.String NAME_BORDERS
public static final java.lang.String NAME_DATA
public static final java.lang.String NAME_LOCAL_DATA
public static final java.lang.String NAME_TEMPLATE_DATA
public static final java.lang.String NAME_SOURCE_ENCODING
public static final java.lang.String NAME_OUTPUT_ENCODING
public static final java.lang.String NAME_URL_ESCAPING_CHARSET
public static final java.lang.String NAME_LOCALE
public static final java.lang.String NAME_NUMBER_FORMAT
public static final java.lang.String NAME_BOOLEAN_FORMAT
public static final java.lang.String NAME_DATE_FORMAT
public static final java.lang.String NAME_TIME_FORMAT
public static final java.lang.String NAME_DATETIME_FORMAT
public static final java.lang.String NAME_TIME_ZONE
public static final java.lang.String NAME_SQL_DATE_AND_TIME_TIME_ZONE
public static final java.lang.String NAME_TAG_SYNTAX
public static final java.lang.String NAME_INTERPOLATION_SYNTAX
public static final java.lang.String NAME_OUTPUT_FORMAT
public static final java.lang.String NAME_OUTPUT_FORMATS_BY_PATH
public static final java.lang.String NAME_MAP_COMMON_EXTENSIONS_TO_OUTPUT_FORMATS
public static final java.lang.String NAME_CASE_SENSITIVE
public static final java.lang.String NAME_STOP_ON_ERROR
public static final java.lang.String NAME_REMOVE_EXTENSIONS
public static final java.lang.String OLD_NAME_REMOVE_EXTENSION
public static final java.lang.String NAME_REMOVE_POSTFIXES
public static final java.lang.String OLD_NAME_REMOVE_POSTFIX
public static final java.lang.String NAME_REPLACE_EXTENSIONS
public static final java.lang.String OLD_NAME_REPLACE_EXTENSION
public static final java.lang.String NAME_REMOVE_FREEMARKER_EXTENSIONS
public static final java.lang.String NAME_ALWAYS_CREATE_DIRECTORIES
public static final java.lang.String NAME_IGNORE_CVS_FILES
public static final java.lang.String NAME_IGNORE_SVN_FILES
public static final java.lang.String NAME_IGNORE_TEMPORARY_FILES
public static final java.lang.String NAME_EXPERT
public static final java.lang.String NAME_LOG_FILE
public static final java.lang.String NAME_APPEND_LOG_FILE
public static final java.lang.String NAME_CONFIGURATION_BASE
public static final java.lang.String NAME_ECHO_FORMAT
public static final java.lang.String NAME_QUIET
public static final java.lang.String NAME_COLUMNS
public static final java.lang.String NAME_SNIP
public static final java.lang.String NAME_PRINT_STACK_TRACE
public static final java.lang.String NAME_XPATH_ENGINE
public static final java.lang.String NAME_XML_CATALOG_FILES
public static final java.lang.String NAME_XML_CATALOG_PREFER
public static final java.lang.String NAME_VALIDATE_XML
public static final java.lang.String NAME_XML_RENDERINGS
public static final java.lang.String VALUE_SOURCE
public static final java.lang.String VALUE_HOST
public static final java.lang.String VALUE_OUTPUT
public static final java.lang.String VALUE_OBJECTWRAPPER_SHARED_BEANS_WRAPPER
public static final java.lang.String VALUE_TAG_SYNTAX_ANGLE_BRACKET
public static final java.lang.String VALUE_TAG_SYNTAX_SQUARE_BRACKET
public static final java.lang.String VALUE_TAG_SYNTAX_AUTO_DETECT
public static final java.lang.String VALUE_INTERPOLATION_SYNTAX_LEGACY
public static final java.lang.String VALUE_INTERPOLATION_SYNTAX_DOLLAR
public static final java.lang.String VALUE_INTERPOLATION_SYNTAX_SQUARE_BRACKET
public static final java.lang.String VALUE_NONE
public static final java.lang.String VALUE_REALLY_QUIET
public static final java.lang.String VALUE_XML_CATALOG_PREFER_PUBLIC
public static final java.lang.String VALUE_XML_CATALOG_PREFER_SYSTEM
public static final java.lang.String VALUE_GLOBAL_DEFAULT
public static final java.lang.String DEFAULT_CFG_FILE_NAME
public static final java.lang.String DEFAULT_CFG_FILE_NAME_OLD
public static final Settings.SettingType TYPE_ANY
Input type: Object
. Known bug: null
value is allowed (incorrectly), but in effect
removes (un-sets) the value.
Output type: Object
.
String input: any value, stored as is.
Merging: not supported.
public static final Settings.SettingType TYPE_STRING
Input type: String
, Number
,
Boolean
. The last two is converted to string with
toString()
Output type: String
.
String input: any value, stored as is.
Merging: not supported
public static final Settings.SettingType TYPE_INTEGER
Input type: Number
that can be converted to
Integer
without loss.
Output type: Integer
.
String input: any value, that can be parsed to Integer
by Integer.parseInt
after trimming. In additional,
redundant +
sign is supported.
Merging: not supported
public static final Settings.SettingType TYPE_BOOLEAN
Input type: Boolean
.
Output type: Boolean
.
String input: After trimming and converting to lower-case,
"true"
, "false"
or empty
string are allowed. Empty string is interpreted as true
(consider a properties file that contains a key without value).
Merging: not supported
public static final Settings.SettingType TYPE_SEQUENCE
Input type: List
, any array, Vector
. No
restriction regarding the type of the list items.
Output type: List
. No restriction regarding the type of
the list items.
String input: TDD expression starting in list mode. If the result is
a list that contains a single list, then the contained list will
be used. This heuristic is used to fix this user mistake:
--some-list="[a, b, c]"
instead of:
--some-list="a, b, c"
Merging: the two lists are concatenated, with the default (inherited) value coming last.
public static final Settings.SettingType TYPE_LOCAL_DATA_MODEL
TYPE_SEQUENCE
, just if the value is given as
text (string input), it defers the evaluation of the hash parameter of
the case function call, and stores that as
Fragment
. This is required because that hash parameter
may uses data loaders, which shouldn't be executed until almost all
settings of the Engine
are set. This also means that if
you set the setting value with Java, the last parameter to the
case FunctionCall
must be a
Fragment
instead of Map
, if you want to use
data loaders in it.public static final Settings.SettingType TYPE_HASH
Input type: Map
, Dictionary
.
Output type: Map
.
String input: TDD expression, starting in hash mode.
Merging: the two maps are added (union)
public static final Settings.SettingType TYPE_CFG_RELATIVE_PATH
Input type: String
, FileWithSettingValue
.
Plain File
is not allowed.
Output type: FileWithSettingValue
.
String input: Any value, trimmed before converting.
Merging: not supported
public static final Settings.SettingType TYPE_CFG_RELATIVE_PATHS
Input type: Same as for TYPE_SEQUENCE
, but all list items
must be string or FileWithSettingValue
.
Output type: Same as for TYPE_SEQUENCE
, but all list items
are FileWithSettingValue
-s.
String input: Same as for TYPE_SEQUENCE
, but all sequence
items must be strings. "force strings" option is on during the TDD
interpretation.
Merging: the two list are concatenated.
public static final Settings.SettingType TYPE_UNRESOLVED_CFG_RELATIVE_PATHS
Input type: Same as for TYPE_SEQUENCE
, but all list items
must be strings or FileWithConfigurationBase
-s.
Output type: Same as for TYPE_SEQUENCE
, but all list items
are FileWithConfigurationBase
-s.
String input: Same as for TYPE_SEQUENCE
, but all sequence
items must be strings. "force strings" option is on during the TDD
interpretation.
Merging: the two list are concatenated.
public static final Settings.SettingType TYPE_DATA_MODEL
Input type: Map
, Dictionary
,
Fragment
,
private class DataList
.
Output type: private class DataList
extends
ArrayList
. The list may contains:
Map
, String
, Fragment
.
String input: TDD expression, starting in hash mode.
Merging: The tow lists are concatenated.
This type is used for the "data" setting. The hash value of that
setting can't be generated until the final value of all other setting is
set (because data loaders may use the other settings). This way, the
value of the "data" setting is a List
that records the
changes made on the setting, and not a Map
. The
Map
will be built internally based on the list when you call
execute()
.
public static final Settings.SettingType TYPE_HASH_OF_SEQUENCE_OF_CFG_RELATIVE_PATHS
Input type: Map
or Dictionary
, that stores
a List
or Vector
or array, that stores
strings and/or FileWithSettingValue
-s. Also, the map may
contains strings and/or FileWithSettingValue
directly as
value (instead of a list of length 1 that stores the same value).
Output type: Map
of List
of
FileWithSettingValue
-s.
String input: TDD expression, starting in hash mode.
Merging: the two maps are added (union)
public Settings(java.io.File baseDir) throws SettingException
baseDir
- the base directory used to resolve relative paths in
setting names. When you load settings from a configuration file, the
parent directory of the file will be used instenad, for the settings
coming from the file.SettingException
public void define(java.lang.String name, Settings.SettingType type, boolean merge, boolean forceStr) throws SettingException
name
- the name of the settingtype
- the type of the settingmerge
- specifies if when you add a new setting value, and the
setting has already set, then the new and old value will be merged,
or the new value will replace old value. Note that only a few
setting types support merging, such as list and map.forceStr
- specifies if when parsing string values with TDD
interpreter, it should be done with the "force strings" option or
not.SettingException
public boolean isDefined(java.lang.String name)
public static java.util.Iterator getStandardSettingNames()
public void add(java.lang.String name, java.lang.Object value) throws SettingException
SettingException
set(String, Object)
public void addDefault(java.lang.String name, java.lang.Object value) throws SettingException
SettingException
setDefault(String, boolean)
public void addWithString(java.lang.String name, java.lang.String value) throws SettingException
add(String, Object)
, but uses string value that will be interpreted by
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean)
. Used when the value comes from a strings-only source.SettingException
public void addDefaultWithString(java.lang.String name, java.lang.String value) throws SettingException
addDefault(String, Object)
, but uses string value.SettingException
public void add(java.util.Map settingMap) throws SettingException
add(String, Object)
. Thus, all keys must be String
-s.SettingException
public void addDefaults(java.util.Map settingMap) throws SettingException
addDefault(String, Object)
. Thus, all keys must be String
-s.SettingException
public void addWithStrings(java.util.Properties props) throws SettingException
add(Map)
, but uses a Properties
object,
so the values are strings.SettingException
public void addDefaultsWithStrings(java.util.Properties props) throws SettingException
addDefaults(Map)
, but uses a Properties
object, so the values are strings.SettingException
public void set(java.lang.String name, java.lang.Object value) throws SettingException
name
- The name of the setting. It's validated if a setting with this name is defined, otherwise it throws
SettingException
value
- Not null
; use remove(String)
to un-set a value. (Known bug: if the type is
#TYPE_ANY
, null
will not cause error, and in effect un-set the value.)SettingException
- If the setting name or value is not valid.public void set(java.lang.String name, boolean value) throws SettingException
Boolean
value.SettingException
public void set(java.lang.String name, int value) throws SettingException
Integer
value.SettingException
public void setDefault(java.lang.String name, java.lang.Object value) throws SettingException
set(String, Object)
for the parameters and thrown
exception.SettingException
public void setDefault(java.lang.String name, boolean value) throws SettingException
Boolean
value; see setDefault(String, Object)
.SettingException
public void setDefault(java.lang.String name, int value) throws SettingException
Integer
value; see setDefault(String, Object)
.SettingException
public void setWithString(java.lang.String name, java.lang.String value) throws SettingException
set(String, Object)
, but uses string value that will be parsed with
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean)
. Used when the value comes from a strings-only source.SettingException
public void setDefaultWithString(java.lang.String name, java.lang.String value) throws SettingException
setDefault(String, Object)
, but uses a string value that will be parsed with
Settings.SettingType.parse(fmpp.setting.Settings, java.lang.String, boolean)
.SettingException
public void set(java.util.Map settingValues) throws SettingException
set(String, Object)
for each name-value pair of the Map
. The change is atomic; if a
SettingException
occurs, no setting values are changed.settingValues
- Maps setting names (String
-s) to setting values (non-null
Object
-s).SettingException
public void setDefaults(java.util.Map settingValues) throws SettingException
SettingException
public void setWithStrings(java.util.Properties props) throws SettingException
setWithString(String, String)
for each name-value pair of the Properties
. The change is
atomic; if a SettingException
occurs, no setting values are changed.SettingException
public void setDefaultsWithStrings(java.util.Properties props) throws SettingException
setWithStrings(Properties)
, but calls setDefaultWithString(String, String)
instead
of setWithString(String, String)
.SettingException
public void load(java.io.File cfgFile) throws SettingException
add(Map)
.
Note that meta-settings ("configurationBase" and "inheritConfiguration") will not be added to the settings object.
If the setting "configurationBase" or "inheritConfiguration" is set in this setting object, then they will override the meta-settings in the file directly loaded with this method. Files inherited by the directly loaded file, however, are not affected.
cfgFile
- the configuration file, or the directory of the
configuration file if its file name is one of the
default configuration file names.SettingException
loadDefaults(File)
public void loadDefaults(java.io.File cfgFile) throws SettingException
load
, except that it adds the settings with
addDefaults(Map)
.SettingException
load(File)
public java.lang.Object get(java.lang.String name)
name
- The name of the setting. The name won't be validated.null
if the setting is not set.public java.lang.Object remove(java.lang.String name)
get(String)
will return null
.null
if there was no value stored for the setting.set(String, Object)
public java.util.Iterator getNames()
public void execute() throws SettingException, ProcessingException
Engine
object will be
internally created, and initialized based on the setting values, and then
its process
method will be called. The method automatically
chooses between bulk and single-file processing, based on the presence of
the "outputFile" setting.
Settings will go through semantical checks that are not done when you call other methods. For example, it will be checked if setting "modes" contains valid mode setter function calls, if "sourceRoot" and "outputRoot" are defined for bulk mode, if exactly 1 "sources" is defined for single-file mode, etc.
This method ignores the following settings:
"logFile", "appendLogFile", "echoFormat", "quiet", "snip".
It's the task of the embedding software (the front-end) to interpret
these settings, at least the ones it is interested in.
It usually involves adding progress listeners with
addProgressListener(ProgressListener)
.
This method can be called for multiple times, but be aware of
that for each call of this method, a new Engine
object will be created and initialized, even if you didn't changed the
settings since the last call. If this overhead is not acceptable
in you case, you can call Engine.process(...)
for multiple
times within the same execute()
call, by overriding the
doProcessing(Engine, File[], File, File)
method.
Also, you can do extra engine initalization there.
SettingException
- if the settings are not correct, or can't be
applied because of some errors occured. This exception, when thrown,
is always thrown before the execution of the processing session is
stated.ProcessingException
- if Engine.process
has
thrown any exception, that is, there was an error during the
execution of the processing session. The message of this exception
holds nothing interesting (just a static text). Call its
getCause()
method to get the exception that caused the
termination. Note that all (so even non-checked exceptions) thrown be
the engine are catched and wrapped by this exeption.public void addProgressListener(ProgressListener pl)
Engine
object when you call
execute()
.clearProgressListeners()
public void clearProgressListeners()
addProgressListener(ProgressListener)
public java.lang.Object setEngineAttribute(java.lang.String name, java.lang.Object value)
Engine
object when you call execute()
.null
if
there was no attribute with the given name.public java.lang.Object getEngineAttribute(java.lang.String name)
null
if no attribute exists with the given name.setEngineAttribute(String, Object)
public java.lang.Object removeAttribute(java.lang.String name)
null
if there
was no attribute with the given name.setEngineAttribute(String, Object)
public void clearAttribues()
setEngineAttribute(String, Object)
public void setDontTraverseDirectories(boolean dontTraverseDirs)
public boolean getDontTraverseDirectories()
public java.lang.String dump()
public static int quietSettingValueToInt(java.lang.String value, java.lang.String name) throws SettingException
SettingException
public static java.io.File getDefaultConfigurationFile(java.io.File dir)
null
if no default
configuration file exists in the directory.public void undashNames(java.util.Properties props) throws SettingException
source-root
to sourceRoot
.props
- the Properties
object to convert.SettingException
- if no setting with the given name exists.public void trimValues(java.util.Properties props)
protected void doProcessing(Engine eng, java.io.File[] sources, java.io.File sourceFile, java.io.File outputFile) throws SettingException, ProcessingException
Engine
level,
using the already initialized Engine
object.
By overriding this method, you can
Engine.process(...)
for multiple times, so you
can do multiple processing sessions with the same already
initialized Engine
object.
Engine
initialization.
The inital implementation of this method (that is, the implementation
in the Settings
class) is something like this:
if (outputFile == null) { eng.process(sources); } else { eng.process(sourceFile, outputFile); }
Modifying the Settings
object in this method has no effect on
the Engine
object (which is passed in as argument),
since all settings are already applied on it. If you need to modify the
Engine
object, call its methods directly.
An implementation of this method may leak out the initialized
Engine
object for the caller of execute()
. Also, it
may does not call Engine.proccess(...)
, but left it for the
caller (who has the out-leaked Engine
object). These are
extreme, but otherwise legitimate usages.
eng
- the already initialized Engine
object. You may
do extra addjustments on it.sources
- the list of source files, the parameter to
Engine.process(File[])
. It's null
if
the processing session uses outputFile
setting.sourceFile
- if the session uses outputFile
setting,
then it' the 1st parameter to
Engine.process(File, File)
, otherwise it is null.outputFile
- if the session uses outputFile
setting,
then it' the 2nd parameter to
Engine.process(File, File)
, otherwise it is null.SettingException
ProcessingException
public static java.lang.String getDashedName(java.lang.String name)
public static void fixVersion08SettingNames(java.util.Properties props) throws SettingException
SettingException