ecologylab.xml
Class TranslationSpace

java.lang.Object
  extended by ecologylab.generic.Debug
      extended by ecologylab.xml.TranslationSpace

public final class TranslationSpace
extends Debug

A set of translations between XML element names (tags) and associated Java ElementState class names. This is done by maintaining a HashMap containing the name of the class as the key and its package as the value. If no entry is present in the map, then the default package is returned. This is used when an XML is converted back to its Java State-Object


Nested Class Summary
 class TranslationSpace.TranslationEntry
           
 
Field Summary
protected  java.lang.String name
           
 
Method Summary
 void addTranslation(java.lang.Class classObj)
          Add a translation table entry for an ElementState derived sub-class.
 void addTranslation(java.lang.Class thatClass, java.lang.String alternativeXmlTag)
          Find a prior TranslationEntry for thatClass.
protected  java.util.HashMap<java.lang.String,TranslationSpace.TranslationEntry> entriesByClassName()
           
 java.util.HashMap entriesByTag()
           
static TranslationSpace get(java.lang.String name)
          Find the TranslationSpace called name, if there is one.
static TranslationSpace get(java.lang.String name, java.lang.Class translation)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String defaultPackageName, java.lang.Class[] translations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, java.util.ArrayList<TranslationSpace> inheritedTranslationsSet)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, java.lang.String defaultPackageName)
          Find the TranslationSpace called name, if there is one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, TranslationSpace... inheritedTranslations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, TranslationSpace inheritedTranslations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, TranslationSpace[] inheritedTranslationsSet, java.lang.String defaultPackageName)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, TranslationSpace[] inheritedTranslationsSet, java.lang.String defaultPackageName, NameSpaceDecl[] nameSpaceDecls)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class[] translations, TranslationSpace inheritedTranslations, java.lang.String defaultPackageName)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.Class translation, TranslationSpace inheritedTranslations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, java.lang.String defaultPackageName)
          Find the TranslationSpace called name, if there is one.
static TranslationSpace get(java.lang.String name, java.lang.String defaultPackageName, java.util.ArrayList<TranslationSpace> inheritedTranslationsSet, java.lang.Class[] translations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, TranslationSpace[] inheritedTranslations)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, TranslationSpace[] inheritedTranslations, java.lang.String defaultPackageName)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace get(java.lang.String name, TranslationSpace inheritedTranslations, java.lang.String defaultPackageName)
          Find an existing TranslationSpace by this name, or create a new one.
static TranslationSpace lookup(java.lang.String name)
          Find the TranslationSpace called name, if there is one.
 java.lang.Class<? extends ElementState> lookupNameSpaceByURN(java.lang.String urn)
          Lookup a NameSpace ElementState subclass, with a URN as the key.
 java.lang.String toString()
           
 java.lang.Class xmlTagToClass(java.lang.String xmlTag)
          Look-up a Class object for the xmlTag, using translations in this, and in inherited TranslationSpaces.
 
Methods inherited from class ecologylab.generic.Debug
classSimpleName, closeLoggingFile, debug, debug, debug, debug, debugA, debugA, debugA, debugI, debugI, debugI, error, error, getClassName, getClassName, getInteractive, getPackageName, getPackageName, getPackageName, initialize, level, level, level, logToFile, print, print, println, println, println, println, println, println, printlnA, printlnA, printlnA, printlnI, printlnI, printlnI, printlnI, setLoggingFile, show, show, superString, toggleInteractive, toString, warning, warning, weird, weird
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

name

protected java.lang.String name
Method Detail

addTranslation

public void addTranslation(java.lang.Class classObj)
Add a translation table entry for an ElementState derived sub-class. Assumes that the xmlTag can be derived automatically from the className, by translating case-based separators to "_"-based separators.

Parameters:
classObj - The object for the class.

addTranslation

public void addTranslation(java.lang.Class thatClass,
                           java.lang.String alternativeXmlTag)
Find a prior TranslationEntry for thatClass. Add an alternative tag mapping for it.

Parameters:
thatClass -
alternativeXmlTag -

xmlTagToClass

public java.lang.Class xmlTagToClass(java.lang.String xmlTag)
Look-up a Class object for the xmlTag, using translations in this, and in inherited TranslationSpaces. Will use defaultPackage name here and, recursivley, in inherited spaces, as necessary.

Parameters:
xmlTag - XML node name that we're seeking a Class for.
Returns:
Class object, or null if there is no associated translation.

toString

public java.lang.String toString()
Overrides:
toString in class Debug

lookup

public static TranslationSpace lookup(java.lang.String name)
Find the TranslationSpace called name, if there is one.

Parameters:
name -
Returns:

get

public static TranslationSpace get(java.lang.String name)
Find the TranslationSpace called name, if there is one. Otherwise, create a new one with this name, and return it.

Parameters:
name -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.String defaultPackageName)
Find the TranslationSpace called name, if there is one. It must also have its defaultPackageName = to that passed in as the 2nd argument. If there is no TranslationSpace with this name, create a new one, and set its defaultPackageName. If there is one, but it has the wrong defaultPackageName, then throw a RuntimeException.

Parameters:
name -
Returns:

get

public static TranslationSpace get(java.lang.String defaultPackageName,
                                   java.lang.Class[] translations)
Find an existing TranslationSpace by this name, or create a new one.

Parameters:
defaultPackageName -
translations -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   TranslationSpace inheritedTranslations,
                                   java.lang.String defaultPackageName)
Find an existing TranslationSpace by this name, or create a new one. Inherit from the previous TranslationSpace, by including all mappings from there.

Parameters:
name -
translations -
inheritedTranslationSpaces -
defaultPackageName -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class translation,
                                   TranslationSpace inheritedTranslations)
Find an existing TranslationSpace by this name, or create a new one. Build on a previous TranslationSpace, by including all mappings from there. Add just a single new class.

Parameters:
name -
translation -
inheritedTranslationSpaces -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class translation)
Find an existing TranslationSpace by this name, or create a new one. Add just a single new class.

Parameters:
name -
translation -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   TranslationSpace inheritedTranslations)
Find an existing TranslationSpace by this name, or create a new one. Build on the previous TranslationSpace, by including all mappings from there.

Parameters:
name -
translations -
inheritedTranslationSpaces -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   TranslationSpace... inheritedTranslations)
Find an existing TranslationSpace by this name, or create a new one. Build on the previous TranslationSpace, by including all mappings from there.

Parameters:
name -
translations -
inheritedTranslationSpaces -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   TranslationSpace[] inheritedTranslationsSet,
                                   java.lang.String defaultPackageName)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
translations -
inheritedTranslationsSet -
defaultPackageName -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   TranslationSpace[] inheritedTranslationsSet,
                                   java.lang.String defaultPackageName,
                                   NameSpaceDecl[] nameSpaceDecls)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
translations -
inheritedTranslationsSet -
defaultPackageName -
nameSpaceDecls - Array of ElementState class + URI key map entries for handling XML Namespaces.
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   TranslationSpace[] inheritedTranslations,
                                   java.lang.String defaultPackageName)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
defaultPackageName -
inheritedTranslationsSet -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   TranslationSpace[] inheritedTranslations)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
inheritedTranslationSpaces -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   TranslationSpace inheritedTranslations,
                                   java.lang.String defaultPackageName)
Find an existing TranslationSpace by this name, or create a new one. Build on an inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
inheritedTranslationSpaces -
defaultPackageName -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.String defaultPackageName,
                                   java.util.ArrayList<TranslationSpace> inheritedTranslationsSet,
                                   java.lang.Class[] translations)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
defaultPackageName -
inheritedTranslationsSet -
translations -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   java.util.ArrayList<TranslationSpace> inheritedTranslationsSet)
Find an existing TranslationSpace by this name, or create a new one. Build on a set of inherited TranslationSpaces, by including all mappings from them.

Parameters:
name -
translations -
inheritedTranslationsSet -
Returns:

get

public static TranslationSpace get(java.lang.String name,
                                   java.lang.Class[] translations,
                                   java.lang.String defaultPackageName)
Find the TranslationSpace called name, if there is one. It must also have its defaultPackageName = to that passed in as the 2nd argument. If there is no TranslationSpace with this name, create a new one, and set its defaultPackageName. If there is one, but it has the wrong defaultPackageName, then throw a RuntimeException. Add the translations to the TranslationSpace.

Parameters:
name -
Returns:
Either an existing or new TranslationSpace, with this defaultPackageName, and these translations. A RuntimeException will be thrown if there was already such a TranslationSpace, but with different defaultPackageName.

entriesByClassName

protected java.util.HashMap<java.lang.String,TranslationSpace.TranslationEntry> entriesByClassName()

entriesByTag

public java.util.HashMap entriesByTag()

lookupNameSpaceByURN

public java.lang.Class<? extends ElementState> lookupNameSpaceByURN(java.lang.String urn)
Lookup a NameSpace ElementState subclass, with a URN as the key.

Parameters:
urn -
Returns: