org.extex.framework.configuration.impl
Class TexConfiguration

java.lang.Object
  extended by org.extex.framework.configuration.impl.TexConfiguration
All Implemented Interfaces:
java.lang.Iterable<Configuration>, Configuration

public class TexConfiguration
extends java.lang.Object
implements Configuration

This configuration represents a TeX like file format.

  \config[abc={12},def={23}]{
   \subconfig[xyz={4365}]{
   }
  }
 

Version:
$Revision$
Author:
Gerd Neugebauer

Constructor Summary
TexConfiguration(java.io.InputStream stream, java.lang.String resource)
          Creates a new object and fills it with the configuration read from an input stream.
 
Method Summary
 Configuration findConfiguration(java.lang.String key)
          Extract a sub-configuration with a given name.
 Configuration findConfiguration(java.lang.String key, java.lang.String attribute)
          Extract a sub-configuration with a given name and a given attribute.
 java.lang.String getAttribute(java.lang.String name)
          Getter for an attribute with a given name.
 Configuration getConfiguration(java.lang.String key)
          Extract a sub-configuration with a given name.
 Configuration getConfiguration(java.lang.String key, java.lang.String attribute)
          Extract a sub-configuration with a given name and a given attribute.
protected  java.lang.String getName()
          Getter for the name.
 java.lang.String getValue()
          Getter for the textual value of this configuration.
 java.lang.String getValue(java.lang.String key)
          Retrieve a value from the configuration as String.
 int getValueAsInteger(java.lang.String key, int defaultValue)
          Retrieve a value from the configuration as int.
 void getValues(java.util.List<java.lang.String> list, java.lang.String key)
          Get the list of all values with the given tag name in the current configuration and append them to a given String List.
 java.util.List<java.lang.String> getValues(java.lang.String key)
          Get the list of all values with the given tag name in the current configuration.
 java.util.Iterator<Configuration> iterator()
          Get an iterator for all sub-configurations.
 java.util.Iterator<Configuration> iterator(java.lang.String key)
          Retrieve an iterator over all items of a sub-configuration.
protected  void read(java.io.InputStream stream, java.lang.String resource, java.lang.String base)
          Read the configuration from a stream.
 void setConfigurationLoader(ConfigurationLoader loader)
          Sets a loader for new external sources.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TexConfiguration

public TexConfiguration(java.io.InputStream stream,
                        java.lang.String resource)
                 throws ConfigurationInvalidResourceException,
                        ConfigurationNotFoundException,
                        ConfigurationSyntaxException,
                        ConfigurationIOException
Creates a new object and fills it with the configuration read from an input stream.

The path given is the location of the TeX resource (file) containing the configuration information. This path is used to determine the TeX resource utilizing the class loader for this class. Thus it is possible to place the TeX file into a jar archive.

Beside of the class loader a search is performed by appending .tex and/or prepending config/ if the path is not sufficient to find the resource.

Parameters:
stream - the stream to read the configuration from.
resource - the name of the resource to be used; i.e. something like the file name
Throws:
ConfigurationInvalidResourceException - in case that the given resource name is null or empty.
ConfigurationNotFoundException - in case that the named path does not lead to a resource.
ConfigurationSyntaxException - in case that the resource contains syntax errors.
ConfigurationIOException - in case of an IO exception while reading the resource.
Method Detail

findConfiguration

public Configuration findConfiguration(java.lang.String key)
                                throws ConfigurationInvalidResourceException,
                                       ConfigurationNotFoundException,
                                       ConfigurationSyntaxException,
                                       ConfigurationIOException
Extract a sub-configuration with a given name.

Consider the following example with the configuration currently rooted at cfg:

   <cfg>
     . . .
     <abc>
     . . .
     </abc>
     . . .
   </cfg>
 

Then getConfig("abc") returns a new XMLConfig rooted at abc.

If there are more than one tags with the same name then the first one is used.

If there are no tags with the given name then null is returned.

Specified by:
findConfiguration in interface Configuration
Parameters:
key - the tag name of the sub-configuration
Returns:
the sub-configuration or null if none is found
Throws:
ConfigurationInvalidResourceException - in case that the given resource name is null or empty
ConfigurationNotFoundException - in case that the named path does not lead to a resource
ConfigurationSyntaxException - in case that the resource contains syntax errors
ConfigurationIOException - in case of an IO exception while reading the resource
See Also:
Configuration.findConfiguration( java.lang.String)

findConfiguration

public Configuration findConfiguration(java.lang.String key,
                                       java.lang.String attribute)
                                throws ConfigurationException
Extract a sub-configuration with a given name and a given attribute.

Consider the following example with the configuration currently rooted at cfg:

   <cfg>
     . . .
     <abc name="one">
     . . .
     </abc>
     <abc name="two">
     . . .
     </abc>
     . . .
   </cfg>
 

Then getConfig("abc","two") returns a new XMLConfig rooted at the abc with the name attribute "two".

If there are more than one tags with the same name then the first one is used.

If there are no tags with the given name then null is returned.

Specified by:
findConfiguration in interface Configuration
Parameters:
key - the tag name of the sub-configuration
attribute - the value of the attribute name
Returns:
the sub-configuration
Throws:
ConfigurationException - in case of other errors.
See Also:
Configuration.findConfiguration( java.lang.String, java.lang.String)

getAttribute

public java.lang.String getAttribute(java.lang.String name)
Getter for an attribute with a given name.

Specified by:
getAttribute in interface Configuration
Parameters:
name - the tag name of the attribute
Returns:
the value of the attribute or null if such an attribute is not present
See Also:
Configuration.getAttribute( java.lang.String)

getConfiguration

public Configuration getConfiguration(java.lang.String key)
                               throws ConfigurationException
Extract a sub-configuration with a given name.

Consider the following example with the configuration currently rooted at cfg:

   <cfg>
     . . .
     <abc>
     . . .
     </abc>
     . . .
   </cfg>
 

Then getConfig("abc") returns a new XMLConfig rooted at abc.

If there are more than one tags with the same name then the first one is used.

If there are no tags with the given name then an exception is thrown.

Specified by:
getConfiguration in interface Configuration
Parameters:
key - the tag name of the sub-configuration
Returns:
the sub-configuration
Throws:
ConfigurationException - in case of other errors. Especially
ConfigurationNotFoundException in case that the given name does not correspond to one of the tags in the current configuration
See Also:
Configuration.getConfiguration( java.lang.String)

getConfiguration

public Configuration getConfiguration(java.lang.String key,
                                      java.lang.String attribute)
                               throws ConfigurationException
Extract a sub-configuration with a given name and a given attribute.

Consider the following example with the configuration currently rooted at cfg:

   <cfg>
     . . .
     <abc name="one">
     . . .
     </abc>
     <abc name="two">
     . . .
     </abc>
     . . .
   </cfg>
 

Then getConfig("abc","two") returns a new Configuration rooted at the abc with the name attribute "two".

If there are more than one tags with the same name then the first one is used.

If there are no tags with the given name then an exception is thrown.

Specified by:
getConfiguration in interface Configuration
Parameters:
key - the tag name of the sub-configuration
attribute - the value of the attribute name
Returns:
the sub-configuration
Throws:
ConfigurationException - in case of other errors. Especially
ConfigurationNotFoundException in case that the given name does not correspond to one of the tags in the current configuration
See Also:
Configuration.getConfiguration( java.lang.String, java.lang.String)

getName

protected java.lang.String getName()
Getter for the name.

Returns:
the name

getValue

public java.lang.String getValue()
                          throws ConfigurationException
Getter for the textual value of this configuration.

Specified by:
getValue in interface Configuration
Returns:
the text stored directly in this configuration
Throws:
ConfigurationException - in case that something went wrong
See Also:
Configuration.getValue()

getValue

public java.lang.String getValue(java.lang.String key)
                          throws ConfigurationException
Retrieve a value from the configuration as String. If the value could not be determined then the empty string is returned.

Consider the following example with the configuration currently rooted at cfg:

   <cfg>
     . . .
     <one>the first value</one>
     <two>the second value</two>
     . . .
   </cfg>
 

Then getValue("two") returns the String "the second value".

Specified by:
getValue in interface Configuration
Parameters:
key - the name of the desired value
Returns:
the value of key or null
Throws:
ConfigurationException - in case that something went wrong
See Also:
Configuration.getValue( java.lang.String)

getValueAsInteger

public int getValueAsInteger(java.lang.String key,
                             int defaultValue)
                      throws ConfigurationException
Retrieve a value from the configuration as int. If the value could not be determined then a given default value is returned.

Specified by:
getValueAsInteger in interface Configuration
Parameters:
key - the name of the desired value
defaultValue - the default value
Returns:
the value of key or the default value
Throws:
ConfigurationException - in case that something went wrong
See Also:
Configuration.getValueAsInteger( java.lang.String, int)

getValues

public void getValues(java.util.List<java.lang.String> list,
                      java.lang.String key)
Get the list of all values with the given tag name in the current configuration and append them to a given String List.

Specified by:
getValues in interface Configuration
Parameters:
list - the list to append the values to
key - the name of the tags. A value of null is legal. I this case nothing is appended.
See Also:
Configuration.getValues( java.util.List, java.lang.String)

getValues

public java.util.List<java.lang.String> getValues(java.lang.String key)
Get the list of all values with the given tag name in the current configuration.

Specified by:
getValues in interface Configuration
Parameters:
key - the name of the tags
Returns:
the list of values
See Also:
Configuration.getValues( java.lang.String)

iterator

public java.util.Iterator<Configuration> iterator()
                                           throws ConfigurationException
Get an iterator for all sub-configurations.

Specified by:
iterator in interface java.lang.Iterable<Configuration>
Specified by:
iterator in interface Configuration
Returns:
an iterator for all sub-configurations
Throws:
ConfigurationException - in case that something went wrong
See Also:
Configuration.iterator()

iterator

public java.util.Iterator<Configuration> iterator(java.lang.String key)
                                           throws ConfigurationException
Retrieve an iterator over all items of a sub-configuration.

Specified by:
iterator in interface Configuration
Parameters:
key - the name of the sub-configuration
Returns:
the iterator
Throws:
ConfigurationException - in case that something went wrong
See Also:
Configuration.iterator( java.lang.String)

read

protected void read(java.io.InputStream stream,
                    java.lang.String resource,
                    java.lang.String base)
             throws ConfigurationNotFoundException,
                    ConfigurationIOException,
                    ConfigurationSyntaxException
Read the configuration from a stream.

Parameters:
stream - the stream to read the configuration from.
resource - the name of the resource to be used; i.e. something like the file name
base - the new value for base
Throws:
ConfigurationNotFoundException - in case that the configuration could not be found
ConfigurationIOException - in case of an IO error during reading
ConfigurationSyntaxException - in case of a syntax error in the configuration XML

setConfigurationLoader

public void setConfigurationLoader(ConfigurationLoader loader)
Sets a loader for new external sources.

Specified by:
setConfigurationLoader in interface Configuration
Parameters:
loader - the loader
See Also:
Configuration.setConfigurationLoader( org.extex.framework.configuration.ConfigurationLoader)