standup.joke
Class Schema

java.lang.Object
  extended by standup.joke.Schema

public class Schema
extends Object

This class implements a schema as defined in the technical specification. Its crucial components are the lists of variables, preconditions, and output clause specifications. These are processed by the Generator algorithms to create appropriate jokes. Schema instantiations are not computed on-the-fly, but instead are retrieved from the SQL database which contains cached schema tables -- see the sqlTableName field. Definitions of schemas are defined in standup/resources/xml/schema.xml.

Author:
Ruli Manurung

Field Summary
private  List<Precondition> answerOutSpecs
           
private  int instantiationCount
           
private  String label
           
private  UnifiableListVar lexemeVariables
           
private  List<Precondition> preconditions
           
private  List<Precondition> questionOutSpecs
           
private  String sqlTableName
           
private  boolean usesPhoneticSimilarity
           
private  UnifiableListVar variables
           
 
Constructor Summary
Schema(String _label, UnifiableListVar _variables, UnifiableListVar _lexemes, List<Precondition> _p, List<Precondition> _q, List<Precondition> _a, String _sqlTableName, boolean _ups, int _ic)
           
 
Method Summary
private static UnifiableListVar[] doSchemaVariables(Element e)
           
 List<Precondition> getAnswerOutSpec()
           
private  SQLSchemaRow getCurrentRow(ResultSet rs)
          Processes the current row in the given ResultSet as a SQLSchemaRow for this Schema
 String getInstantiationQuery(InstantiationConstraint[] constraints)
          Returns an SQL query string which would return all the valid instantiations for this schema, given the InstantiationConstraint[] provided as parameter.
 Bindings getKeywordBindings(List<Keyword> lex)
           
 String getLabel()
           
 UnifiableListVar getLexemeVariables()
           
 List<Precondition> getPreconditions()
           
private  SQLSchemaRow getQueryRow(String query)
          Executes the given SQL query and returns the first row as an SQLSchemaRow for this Schema.
 List<Precondition> getQuestionOutSpec()
           
(package private)  int getSQLInstantiationCount()
           
 String getSQLSelectList()
          This returns a comma-delimited list of the schema variables, __followed by the phonetic similarity fields__!
 String getSQLTableName()
           
(package private)  SQLSchemaRow getValidInstantiation(JokeConstraints constraints)
          Returns a valid instantiation for this schema that satisfies the given JokeConstraints.
 UnifiableListVar getVariables()
           
 List<UnifiableCompound> instantiateOSFAnswer(Bindings b)
           
 List<UnifiableCompound> instantiateOSFQuestion(Bindings b)
           
static Schema readXML(Element E)
           
 String toString()
           
 boolean usesPhoneticSimilarity()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

label

private String label

variables

private UnifiableListVar variables

lexemeVariables

private UnifiableListVar lexemeVariables

preconditions

private List<Precondition> preconditions

questionOutSpecs

private List<Precondition> questionOutSpecs

answerOutSpecs

private List<Precondition> answerOutSpecs

sqlTableName

private String sqlTableName

usesPhoneticSimilarity

private boolean usesPhoneticSimilarity

instantiationCount

private int instantiationCount
Constructor Detail

Schema

public Schema(String _label,
              UnifiableListVar _variables,
              UnifiableListVar _lexemes,
              List<Precondition> _p,
              List<Precondition> _q,
              List<Precondition> _a,
              String _sqlTableName,
              boolean _ups,
              int _ic)
Method Detail

toString

public String toString()
Overrides:
toString in class Object

getLabel

public String getLabel()

getKeywordBindings

public Bindings getKeywordBindings(List<Keyword> lex)

getVariables

public UnifiableListVar getVariables()

getLexemeVariables

public UnifiableListVar getLexemeVariables()

getQuestionOutSpec

public List<Precondition> getQuestionOutSpec()

getAnswerOutSpec

public List<Precondition> getAnswerOutSpec()

instantiateOSFQuestion

public List<UnifiableCompound> instantiateOSFQuestion(Bindings b)

instantiateOSFAnswer

public List<UnifiableCompound> instantiateOSFAnswer(Bindings b)

getPreconditions

public List<Precondition> getPreconditions()

usesPhoneticSimilarity

public boolean usesPhoneticSimilarity()

getSQLTableName

public String getSQLTableName()

getSQLSelectList

public String getSQLSelectList()
This returns a comma-delimited list of the schema variables, __followed by the phonetic similarity fields__!

Returns:

getSQLInstantiationCount

int getSQLInstantiationCount()

getValidInstantiation

SQLSchemaRow getValidInstantiation(JokeConstraints constraints)
Returns a valid instantiation for this schema that satisfies the given JokeConstraints.

Parameters:
constraints -
Returns:

getQueryRow

private SQLSchemaRow getQueryRow(String query)
                          throws SQLException
Executes the given SQL query and returns the first row as an SQLSchemaRow for this Schema. Returns null if the query returns no results. Assumes that the query only returns 1 row -- other rows are simply ignored.

Parameters:
query -
Returns:
Throws:
SQLException

getCurrentRow

private SQLSchemaRow getCurrentRow(ResultSet rs)
                            throws SQLException
Processes the current row in the given ResultSet as a SQLSchemaRow for this Schema

Parameters:
rs -
Returns:
Throws:
SQLException

getInstantiationQuery

public String getInstantiationQuery(InstantiationConstraint[] constraints)
Returns an SQL query string which would return all the valid instantiations for this schema, given the InstantiationConstraint[] provided as parameter. This should be called by SQLUtils when obtaining instantiations.


readXML

public static Schema readXML(Element E)

doSchemaVariables

private static UnifiableListVar[] doSchemaVariables(Element e)