ubc.cs.JLog.Terms
Class jTermTranslation

java.lang.Object
  extended by ubc.cs.JLog.Terms.jTermTranslation
All Implemented Interfaces:
iObjectToTerm, iTermToObject

public class jTermTranslation
extends java.lang.Object
implements iObjectToTerm, iTermToObject

This class aggregates iObjectToTerm and iTermToObject converters into a single conversion class which chooses the correct converter object for the for desired conversion. The fundamental idea behind the converter mappings is that typically each prolog term object has a single corresponding Java object, and each Java object has a single corresponding prolog term. To peform an object->term conversion we look up the object class in the term converter look-up table and use the associated converter. To peform a term->object conversion we look up the term class in the object converter table and use the associated converter. Because the source object class is just a key for a converter lookup, the idea is extended to arbitrary keys for converters. It is possible to specify which converter to use via these keys (see the two parameter versions of createTermFromObject and createObjectFromTerm). For each conversion direction (i.e., object->term and term->object) there is a default converter, used if the not matching converters are found in the look-up table.

Author:
Glendon Holst

Field Summary
protected  java.util.Hashtable createObjectKeys
           
protected  java.util.Hashtable createTermKeys
           
protected  iTermToObject defaultCreateObject
           
protected  iObjectToTerm defaultCreateTerm
           
protected  jPrologServices prolog
           
 
Constructor Summary
jTermTranslation()
           
jTermTranslation(jPrologServices ps)
           
 
Method Summary
 java.lang.Object createObjectFromTerm(jTerm term)
          Create a corresponding Java object representation from the given Prolog term.
 java.lang.Object createObjectFromTerm(jTerm term, java.lang.Object key)
           
 jTerm createTermFromObject(java.lang.Object obj)
          Create a corresponding Prolog representation of the given object.
 jTerm createTermFromObject(java.lang.Object obj, java.lang.Object key)
           
 iObjectToTerm getDefaultObjectToTermConverter()
           
 iTermToObject getDefaultTermToObjectConverter()
           
 iObjectToTerm getObjectToTermConverter(java.lang.Object key)
           
 iTermToObject getTermToObjectConverter(java.lang.Object key)
           
 void RegisterDefaultObjectToTermConverter(iObjectToTerm conv)
           
 void RegisterDefaultTermToObjectConverter(iTermToObject conv)
           
 void RegisterObjectToTermConverter(java.lang.Object key, iObjectToTerm conv)
           
 void RegisterTermToObjectConverter(java.lang.Object key, iTermToObject conv)
           
 void setDefaults()
          Sets default translators in the create*Keys hashtables.
protected  void setObjectDefaults()
          Sets the default iTermToObject conversion objects for converting Prolog jTerms into their corresponding Java objects.
protected  void setTermDefaults()
          Sets the default iObjectToTerm conversion objects for converting Java objects into their corresponding Prolog jTerm objects.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

createTermKeys

protected java.util.Hashtable createTermKeys

createObjectKeys

protected java.util.Hashtable createObjectKeys

defaultCreateTerm

protected iObjectToTerm defaultCreateTerm

defaultCreateObject

protected iTermToObject defaultCreateObject

prolog

protected jPrologServices prolog
Constructor Detail

jTermTranslation

public jTermTranslation()

jTermTranslation

public jTermTranslation(jPrologServices ps)
Method Detail

setDefaults

public void setDefaults()
Sets default translators in the create*Keys hashtables. Existing registered translators remain, provided they were not registered for the default keys. This method establishes the default translation behaviour.


setObjectDefaults

protected void setObjectDefaults()
Sets the default iTermToObject conversion objects for converting Prolog jTerms into their corresponding Java objects. Also sets the default iTermToObject conversion object. The following conversion mappings are registered (Keys : ObjectClass):
([Float,jReal] : Float)
([Integer,jInteger] : Integer)
([Boolean,jTrue,jFail] : Boolean)
([jObject] : jObject)
([jListPair,jNullList] : Vector)
([jVariable] : void)
([jTerm] : jTerm)
([String,jAtom] : String) default


setTermDefaults

protected void setTermDefaults()
Sets the default iObjectToTerm conversion objects for converting Java objects into their corresponding Prolog jTerm objects. Also sets the default iObjectToTerm conversion object. The following conversion mappings are registered (Keys : ObjectClass):
([Float,Double,jReal] : jReal)
([Short,Integer,Long,jInteger] : jInteger)
([Boolean,jTrue,jFail] : jTrue, jFail)
([Object] : jObject)
([Vector,Enumeration] : jList)
([jTerm] : jTerm)
(["String",jAtom,jTerm] : jAtom,jTerm) default if no PrologServices specified
([String,jAtom,jTerm] : jTerm) default if PrologServices specified


RegisterTermToObjectConverter

public void RegisterTermToObjectConverter(java.lang.Object key,
                                          iTermToObject conv)

RegisterDefaultTermToObjectConverter

public void RegisterDefaultTermToObjectConverter(iTermToObject conv)

RegisterObjectToTermConverter

public void RegisterObjectToTermConverter(java.lang.Object key,
                                          iObjectToTerm conv)

RegisterDefaultObjectToTermConverter

public void RegisterDefaultObjectToTermConverter(iObjectToTerm conv)

getObjectToTermConverter

public iObjectToTerm getObjectToTermConverter(java.lang.Object key)

getDefaultObjectToTermConverter

public iObjectToTerm getDefaultObjectToTermConverter()

getTermToObjectConverter

public iTermToObject getTermToObjectConverter(java.lang.Object key)

getDefaultTermToObjectConverter

public iTermToObject getDefaultTermToObjectConverter()

createTermFromObject

public jTerm createTermFromObject(java.lang.Object obj)
Description copied from interface: iObjectToTerm
Create a corresponding Prolog representation of the given object.

Specified by:
createTermFromObject in interface iObjectToTerm
Parameters:
obj - The Object to construct the jTerm representation from.
Returns:
the jTerm represting Object obj.

createObjectFromTerm

public java.lang.Object createObjectFromTerm(jTerm term)
Description copied from interface: iTermToObject
Create a corresponding Java object representation from the given Prolog term.

Specified by:
createObjectFromTerm in interface iTermToObject
Parameters:
term - The jTerm to construct the representation from.
Returns:
the Object sub-class represting term.

createTermFromObject

public jTerm createTermFromObject(java.lang.Object obj,
                                  java.lang.Object key)

createObjectFromTerm

public java.lang.Object createObjectFromTerm(jTerm term,
                                             java.lang.Object key)