jmri.configurexml
Class ConfigXmlManager

Show UML class diagram
java.lang.Object
  extended by jmri.jmrit.XmlFile
      extended by jmri.configurexml.ConfigXmlManager
All Implemented Interfaces:
ConfigureManager

public class ConfigXmlManager
extends XmlFile
implements ConfigureManager

Provides the mechanisms for storing an entire layout configuration to XML. "Layout" refers to the hardware: Specific communcation systems, etc.

See Also:
Package summary for details of the overall structure

Field Summary
(package private)  Map<Object,Integer> clist
           
(package private)  String defaultBackupDirectory
           
(package private) static ErrorHandler handler
           
(package private)  ArrayList<org.jdom.Element> loadDeferredList
           
(package private) static org.slf4j.Logger log
           
(package private)  ArrayList<Object> plist
           
(package private)  File prefsFile
           
static String schemaVersion
          Define the current DTD version string for the layout-config DTD.
(package private)  ArrayList<Object> tlist
           
(package private)  ArrayList<Object> ulist
           
(package private)  ArrayList<Object> uplist
           
 
Fields inherited from class jmri.jmrit.XmlFile
dtdLocation, xsltLocation
 
Constructor Summary
ConfigXmlManager()
           
 
Method Summary
static String adapterName(Object o)
          Find the name of the adapter class for an object.
protected  boolean addConfigStore(org.jdom.Element root)
           
protected  void addPrefsStore(org.jdom.Element root)
           
protected  boolean addToolsStore(org.jdom.Element root)
           
protected  void addUserPrefsStore(org.jdom.Element root)
           
protected  boolean addUserStore(org.jdom.Element root)
           
(package private)  void confirmAdapterAvailable(Object o)
          Common check routine to confirm an adapter is available as part of registration process.
static void creationErrorEncountered(XmlAdapter adapter, String operation, String description, String systemName, String userName, Throwable exception)
          Invoke common handling of errors that happen during the "load" process.
 void deregister(Object o)
           
static org.jdom.Element elementFromObject(Object o)
           
protected  boolean finalStore(org.jdom.Element root, File file)
           
 URL find(String f)
          Find a file by looking in xml/layout/ in the preferences directory, if that exists in xml/layout/ in the application directory, if that exists in xml/ in the preferences directory, if that exists in xml/ in the application directory, if that exists at top level in the application directory
 Object findInstance(Class<?> c, int index)
          Find the ith instance of an object of particular class that's been registered for storage.
 ArrayList<Object> getInstanceList(Class<?> c)
          Returns a list of instances stored for a given class.
protected  void includeHistory(org.jdom.Element root)
           
protected  org.jdom.Element initStore()
           
 boolean load(File fi)
          Load a file.
 boolean load(File fi, boolean registerDeferred)
          Load a file.
 boolean load(URL url)
          Create the objects defined in a particular configuration file
 boolean load(URL url, boolean registerDeferred)
          Load a file.
 boolean loadDeferred(File fi)
          Create the objects defined in a particular configuration file that have been deferred until after basic GUI construction completed
 boolean loadDeferred(URL url)
          Create the objects defined in a particular configuration file that have been deferred until after basic GUI construction completed
(package private)  void locateClassFailed(Throwable ex, String adapterName, Object o)
          Handle failure to load adapter class.
(package private)  void locateFileFailed(String f)
          Report a failure to find a file.
 boolean makeBackup(File file)
          Make a backup file.
 void registerConfig(Object o)
           
 void registerConfig(Object o, int x)
           
 void registerPref(Object o)
           
 void registerTool(Object o)
           
 void registerUser(Object o)
          Register an object whose state is to be tracked.
 void registerUserPrefs(Object o)
           
 void removePrefItems()
          Remove the registered preference items.
static void setErrorHandler(ErrorHandler handler)
           
 void setPrefsLocation(File prefsFile)
          Set location for preferences file.
 boolean storeAll(File file)
          Writes config, tools and user to a file.
 boolean storeConfig(File file)
          Writes prefs to a file.
 void storePrefs()
          Writes prefs to a predefined File location.
 void storePrefs(File file)
          Stores just preferences information.
 boolean storeUser(File file)
          Writes user and config info to a file.
 void storeUserPrefs(File file)
          Stores just user preferences information.
static void storingErrorEncountered(XmlAdapter adapter, String operation, String description, String systemName, String userName, Throwable exception)
          Invoke common handling of errors that happen during the "store" process.
 
Methods inherited from class jmri.jmrit.XmlFile
addDefaultInfo, backupFileName, checkFile, createFileNameWithDate, dumpElement, findFile, getBuilder, getRoot, getRoot, getVerify, makeBackupFile, makeBackupFile, newDocument, newDocument, revertBackupFile, rootFromFile, rootFromInputStream, rootFromName, rootFromURL, setVerify, userFileChooser, userFileChooser, userFileChooser, userFileChooser, writeXML, xmlDir
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

schemaVersion

public static final String schemaVersion
Define the current DTD version string for the layout-config DTD. See the DTD versioning discussion

See Also:
Constant Field Values

plist

ArrayList<Object> plist

clist

Map<Object,Integer> clist

tlist

ArrayList<Object> tlist

ulist

ArrayList<Object> ulist

uplist

ArrayList<Object> uplist

loadDeferredList

ArrayList<org.jdom.Element> loadDeferredList

prefsFile

File prefsFile

defaultBackupDirectory

String defaultBackupDirectory

handler

static ErrorHandler handler

log

static org.slf4j.Logger log
Constructor Detail

ConfigXmlManager

public ConfigXmlManager()
Method Detail

registerConfig

public void registerConfig(Object o)
Specified by:
registerConfig in interface ConfigureManager

registerPref

public void registerPref(Object o)
Specified by:
registerPref in interface ConfigureManager

confirmAdapterAvailable

void confirmAdapterAvailable(Object o)
Common check routine to confirm an adapter is available as part of registration process. Only enabled when Log4J DEBUG level is selected, to load fewer classes at startup.


removePrefItems

public void removePrefItems()
Remove the registered preference items. This is used e.g. when a GUI wants to replace the preferences with new values.

Specified by:
removePrefItems in interface ConfigureManager

findInstance

public Object findInstance(Class<?> c,
                           int index)
Description copied from interface: ConfigureManager
Find the ith instance of an object of particular class that's been registered for storage.

Note that the index of an object can change when other objects are stored or removed. The index is for indexing over the objects stored at a moment, not for use as an identification number.

There may be synchronization issues associated with this, although they are expected to be rare in practice.

Specified by:
findInstance in interface ConfigureManager
Parameters:
c - Class of the desired objects
index - a 1-based index of the object to return
Returns:
an object of class c or null

getInstanceList

public ArrayList<Object> getInstanceList(Class<?> c)
Description copied from interface: ConfigureManager
Returns a list of instances stored for a given class.

Specified by:
getInstanceList in interface ConfigureManager
Parameters:
c - Class of the desired objects
Returns:
an ArrayList of objects of class c or null

registerConfig

public void registerConfig(Object o,
                           int x)
Specified by:
registerConfig in interface ConfigureManager

registerTool

public void registerTool(Object o)
Specified by:
registerTool in interface ConfigureManager

registerUser

public void registerUser(Object o)
Register an object whose state is to be tracked. It is not an error if the original object was already registered.

Specified by:
registerUser in interface ConfigureManager
Parameters:
o - The object, which must have an associated adapter class.

registerUserPrefs

public void registerUserPrefs(Object o)
Specified by:
registerUserPrefs in interface ConfigureManager

deregister

public void deregister(Object o)
Specified by:
deregister in interface ConfigureManager

adapterName

public static String adapterName(Object o)
Find the name of the adapter class for an object.

Parameters:
o - object of a configurable type
Returns:
class name of adapter

locateClassFailed

void locateClassFailed(Throwable ex,
                       String adapterName,
                       Object o)
Handle failure to load adapter class. Although only a one-liner in this class, it is a separate member to facilitate testing.


initStore

protected org.jdom.Element initStore()

addPrefsStore

protected void addPrefsStore(org.jdom.Element root)

addConfigStore

protected boolean addConfigStore(org.jdom.Element root)

addToolsStore

protected boolean addToolsStore(org.jdom.Element root)

addUserStore

protected boolean addUserStore(org.jdom.Element root)

addUserPrefsStore

protected void addUserPrefsStore(org.jdom.Element root)

includeHistory

protected void includeHistory(org.jdom.Element root)

finalStore

protected boolean finalStore(org.jdom.Element root,
                             File file)

storeAll

public boolean storeAll(File file)
Writes config, tools and user to a file.

Specified by:
storeAll in interface ConfigureManager
Parameters:
file -
Returns:
true if succeeded

storePrefs

public void storePrefs()
Writes prefs to a predefined File location.

Specified by:
storePrefs in interface ConfigureManager

storePrefs

public void storePrefs(File file)
Description copied from interface: ConfigureManager
Stores just preferences information.

Specified by:
storePrefs in interface ConfigureManager

storeUserPrefs

public void storeUserPrefs(File file)
Description copied from interface: ConfigureManager
Stores just user preferences information.

Specified by:
storeUserPrefs in interface ConfigureManager

setPrefsLocation

public void setPrefsLocation(File prefsFile)
Set location for preferences file.

File need not exist, but location must be writable when storePrefs() called.


storeConfig

public boolean storeConfig(File file)
Writes prefs to a file.

Specified by:
storeConfig in interface ConfigureManager
Parameters:
file -

storeUser

public boolean storeUser(File file)
Writes user and config info to a file.

Config is included here because it doesnt hurt to read it again, and the user data (typically a panel) requires it to be present first.

Specified by:
storeUser in interface ConfigureManager
Parameters:
file -
Returns:
true if succeeded

makeBackup

public boolean makeBackup(File file)
Description copied from interface: ConfigureManager
Make a backup file.

Specified by:
makeBackup in interface ConfigureManager
Parameters:
file - to be backed up
Returns:
true if successful

elementFromObject

public static org.jdom.Element elementFromObject(Object o)

load

public boolean load(File fi)
             throws JmriConfigureXmlException
Load a file.

Handles problems locally to the extent that it can, by routing them to the creationErrorEncountered method.

Specified by:
load in interface ConfigureManager
Parameters:
fi - Input file
Returns:
true if no problems during the load
Throws:
JmriConfigureXmlException

load

public boolean load(URL url)
             throws JmriConfigureXmlException
Description copied from interface: ConfigureManager
Create the objects defined in a particular configuration file

Specified by:
load in interface ConfigureManager
Parameters:
url - Input URL
Returns:
true if succeeded
Throws:
JmriConfigureXmlException

load

public boolean load(File fi,
                    boolean registerDeferred)
             throws JmriConfigureXmlException
Load a file.

Handles problems locally to the extent that it can, by routing them to the creationErrorEncountered method.

Specified by:
load in interface ConfigureManager
Parameters:
fi - file to load
registerDeferred - true to register objects to defer
Returns:
true if no problems during the load
Throws:
JmriConfigureXmlException
Since:
2.11.2
See Also:
XmlAdapter.loadDeferred()

load

public boolean load(URL url,
                    boolean registerDeferred)
             throws JmriConfigureXmlException
Load a file.

Handles problems locally to the extent that it can, by routing them to the creationErrorEncountered method.

Specified by:
load in interface ConfigureManager
Parameters:
url - URL of file to load
registerDeferred - true to register objects to defer
Returns:
true if no problems during the load
Throws:
JmriConfigureXmlException
Since:
3.3.2
See Also:
XmlAdapter.loadDeferred()

loadDeferred

public boolean loadDeferred(File fi)
Description copied from interface: ConfigureManager
Create the objects defined in a particular configuration file that have been deferred until after basic GUI construction completed

Specified by:
loadDeferred in interface ConfigureManager
Parameters:
fi - Input file
Returns:
true if succeeded
See Also:
XmlAdapter.loadDeferred()

loadDeferred

public boolean loadDeferred(URL url)
Description copied from interface: ConfigureManager
Create the objects defined in a particular configuration file that have been deferred until after basic GUI construction completed

Specified by:
loadDeferred in interface ConfigureManager
Parameters:
url - Input URL
Returns:
true if succeeded
See Also:
XmlAdapter.loadDeferred()

find

public URL find(String f)
Find a file by looking

Specified by:
find in interface ConfigureManager
Parameters:
f - Local filename, perhaps without path information
Returns:
Corresponding File object

locateFileFailed

void locateFileFailed(String f)
Report a failure to find a file. This is a separate member to ease testing.

Parameters:
f - Name of file not located.

creationErrorEncountered

public static void creationErrorEncountered(XmlAdapter adapter,
                                            String operation,
                                            String description,
                                            String systemName,
                                            String userName,
                                            Throwable exception)
Invoke common handling of errors that happen during the "load" process.

Generally, this is invoked by XmlAdapter implementations of their creationErrorEncountered() method (note different arguemments, though). The standard implemenation of that is in AbstractXmlAdapter.

Exceptions passed into this are absorbed.

Parameters:
adapter - Object that encountered the error (for reporting), may be null
operation - description of the operation being attempted, may be null
description - description of error encountered
systemName - System name of bean being handled, may be null
userName - used name of the bean being handled, may be null
exception - Any exception being handled in the processing, may be null

storingErrorEncountered

public static void storingErrorEncountered(XmlAdapter adapter,
                                           String operation,
                                           String description,
                                           String systemName,
                                           String userName,
                                           Throwable exception)
Invoke common handling of errors that happen during the "store" process.

Generally, this is invoked by XmlAdapter implementations of their creationErrorEncountered() method (note different arguemments, though). The standard implemenation of that is in AbstractXmlAdapter.

Exceptions passed into this are absorbed.

Parameters:
adapter - Object that encountered the error (for reporting), may be null
operation - description of the operation being attempted, may be null
description - description of error encountered
systemName - System name of bean being handled, may be null
userName - used name of the bean being handled, may be null
exception - Any exception being handled in the processing, may be null

setErrorHandler

public static void setErrorHandler(ErrorHandler handler)


Copyright © 1997-2014 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads