velosurf.model
Class Entity

java.lang.Object
  extended by velosurf.model.Entity

public class Entity
extends java.lang.Object

The Entity class represents an entity in the data model. It should not be constructed directly.

Author:
Claude Brisson

Nested Class Summary
private  class Entity.FieldConstraintInfo
          constraints
 
Field Summary
protected  java.util.Map actionMap
          actions of this entity
protected  java.util.Map<java.lang.String,java.lang.String> aliasByColumn
          attributes of this entity
protected  java.util.Map attributeMap
           
protected  Cache cache
          the cache
protected  int cachingMethod
          the caching method
protected  java.util.Map<java.lang.String,java.lang.String> columnByAlias
           
protected  java.util.List<java.lang.String> columns
          column names in natural order
private  java.util.List<Entity.FieldConstraintInfo> constraints
           
protected  Database db
          the database connection
protected  java.lang.String fetchQuery
          the SQL query used to fetch one instance of this entity
protected  java.lang.Class instanceClass
          the java class to use to realize this instance
protected  boolean[] keyColObfuscated
          obfuscation status of key columns
protected  java.util.List<java.lang.String> keyCols
          key column names in natural order
protected  java.util.List localizedColumns
          localized columns
protected  java.lang.String name
          name
protected  boolean obfuscate
          whether to obfuscate something
protected  java.util.List<java.lang.String> obfuscatedColumns
          names of obfuscated columns
protected  boolean readOnly
          whether this entity is read-only or not
protected  java.lang.String table
          table
 
Constructor Summary
Entity(Database db, java.lang.String name, boolean readOnly, int cachingMethod)
          Constructor reserved for the framework
 
Method Summary
 void addAction(Action action)
           
 void addAlias(java.lang.String alias, java.lang.String column)
           
 void addAttribute(Attribute attribute)
          add a new attribute
 void addColumn(java.lang.String colName)
          add a column at the end of the sequential list of named columns (called during the reverse engeenering of the database)
 void addConstraint(java.lang.String column, FieldConstraint constraint)
           
 void addPKColumn(java.lang.String colName)
          adds a key column to the sequential list of the key columns (called during the reverse-engeenering of the database)
 java.util.List<java.lang.String> aliasToColumn(java.util.List<java.lang.String> aliases)
           
 java.lang.String aliasToColumn(java.lang.String alias)
           
protected  void buildFetchQuery()
          build the SQL query used to fetch one instance of this query
protected  java.lang.Object buildKey(ReadOnlyMap values)
          build the key for the Cache from a DataAccessor
 void clearCache()
          Clear the cache
 java.lang.String columnToAlias(java.lang.String column)
           
 boolean delete(ReadOnlyMap values)
          delete a row based on (key) values
 java.lang.String deobfuscate(java.lang.Object value)
          de-obfuscate given value
protected  void extractColumnValues(ReadOnlyMap source, java.util.Map target)
          extract column values from an input DataAccessor source and store result in target
 Instance fetch(java.util.List values)
          fetch an instance from key values stored in a List in natural order
 Instance fetch(java.lang.Number keyValue)
          fetch an instance from its key value specified as a Number
 Instance fetch(ReadOnlyMap values)
          fetch an instance from key values stored in a Map
 Instance fetch(java.lang.String keyValue)
          fetch an instance from its key value as a string
 java.lang.Object filterID(java.lang.Long id)
          obfuscate this id value if needed
 ExportedKey findExportedKey(Entity fkEntity, java.util.List<java.lang.String> fkCols)
           
 ImportedKey findImportedKey(Entity pkEntity, java.util.List<java.lang.String> fkCols)
           
 Action getAction(java.lang.String property)
          get the named action from this entity
 Attribute getAttribute(java.lang.String property)
          Get a named attribute of this entity
 java.util.List<java.lang.String> getColumns()
          getter for the list of column names
 Database getDB()
          get the database connection
 java.lang.String getFetchQuery()
          get the SQL query string used to fetch one instance of this query
 Instance getInstance(java.util.Map values)
          get an instance whose values are in a map (by default, do not update instance values with map values if the instance is found in the cache)
 Instance getInstance(java.util.Map values, boolean updateValues)
          get an instance whose values are in a map
 Instance getInstance(ReadOnlyMap values)
          get an instance from its values contained in a DataAccessor object (by default, update all fields based on the values in the DataAccessor if the instance has been found in the cache)
 Instance getInstance(ReadOnlyMap values, boolean updateValues)
          get an instance from a DataAccessor object
 java.lang.String getName()
          getter for the name of this entity
 java.util.List<java.lang.String> getPKCols()
          getter for the list of key column names
 java.lang.String getTableName()
          get the name of the mapped table
 boolean hasLocalizedColumns()
          does this entity have localized columns ?
 boolean insert(ReadOnlyMap values)
          insert a new row based on values of a map
 void invalidateInstance(ReadOnlyMap instance)
           
 boolean isLocalized(java.lang.String column)
          returns whether the given column is obfuscated
 boolean isObfuscated(java.lang.String column)
          returns whether the given column is obfuscated
 boolean isReadOnly()
          Is this entity read-only or read-write?
 Instance newInstance()
          create a new realisation of this entity
 Instance newInstance(java.util.Map values)
          builds a new instance from values contained in a Map
 Instance newInstance(ReadOnlyMap values)
          build a new instance from a DataAccessor object
 java.lang.String obfuscate(java.lang.Object value)
          obfuscate given value
 RowIterator query()
          issue a query to iterate though all instances of this entity
 RowIterator query(java.util.List refineCriteria, java.lang.String order)
          issue a query to iterate thought instances of this entity, with a facultative refining criteria and a facultative order by clause
 void rename(java.lang.String name)
          set the name of this entity ** DO NOT USE DIRECTLY **
 void reverseEnginered()
          Used by the framework to notify this entity that its reverse enginering is over
 void setCachingMethod(int caching)
          Specify the caching method, see Cache for allowed constants.
 void setInstanceClass(java.lang.String className)
          Specify a custom class to use when instanciating this entity
 void setLocalized(java.util.List columns)
          indicates a column as being localized
 void setObfuscated(java.util.List columns)
          indicates a column as being obfuscated
 void setReadOnly(boolean readOnly)
          set this entity to be read-only or read-write
 void setTableName(java.lang.String table)
          set the name of the table mapped by this entity
 boolean update(ReadOnlyMap values)
          update a row based on a set of values that must contain kety values
 boolean validate(ReadOnlyMap row, UserContext userContext)
          validate a set of values
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

protected java.lang.String name
name


table

protected java.lang.String table
table


columns

protected java.util.List<java.lang.String> columns
column names in natural order


keyCols

protected java.util.List<java.lang.String> keyCols
key column names in natural order


obfuscate

protected boolean obfuscate
whether to obfuscate something


obfuscatedColumns

protected java.util.List<java.lang.String> obfuscatedColumns
names of obfuscated columns


keyColObfuscated

protected boolean[] keyColObfuscated
obfuscation status of key columns


localizedColumns

protected java.util.List localizedColumns
localized columns


aliasByColumn

protected java.util.Map<java.lang.String,java.lang.String> aliasByColumn
attributes of this entity


columnByAlias

protected java.util.Map<java.lang.String,java.lang.String> columnByAlias

attributeMap

protected java.util.Map attributeMap

actionMap

protected java.util.Map actionMap
actions of this entity


instanceClass

protected java.lang.Class instanceClass
the java class to use to realize this instance


fetchQuery

protected java.lang.String fetchQuery
the SQL query used to fetch one instance of this entity


readOnly

protected boolean readOnly
whether this entity is read-only or not


db

protected Database db
the database connection


cachingMethod

protected int cachingMethod
the caching method


cache

protected Cache cache
the cache


constraints

private java.util.List<Entity.FieldConstraintInfo> constraints
Constructor Detail

Entity

public Entity(Database db,
              java.lang.String name,
              boolean readOnly,
              int cachingMethod)
Constructor reserved for the framework

Parameters:
db - database connection
name - entity name
readOnly - access mode (read-write or read-only)
cachingMethod - caching method to be used
Method Detail

addColumn

public void addColumn(java.lang.String colName)
add a column at the end of the sequential list of named columns (called during the reverse engeenering of the database)

Parameters:
colName - column name

addAlias

public void addAlias(java.lang.String alias,
                     java.lang.String column)

aliasToColumn

public java.lang.String aliasToColumn(java.lang.String alias)

aliasToColumn

public java.util.List<java.lang.String> aliasToColumn(java.util.List<java.lang.String> aliases)

columnToAlias

public java.lang.String columnToAlias(java.lang.String column)

addPKColumn

public void addPKColumn(java.lang.String colName)
adds a key column to the sequential list of the key columns (called during the reverse-engeenering of the database)

Parameters:
colName - name of the key column

addAttribute

public void addAttribute(Attribute attribute)
add a new attribute


getAttribute

public Attribute getAttribute(java.lang.String property)
Get a named attribute of this entity

Parameters:
property - attribute name
Returns:
the attribute

addAction

public void addAction(Action action)

getAction

public Action getAction(java.lang.String property)
get the named action from this entity

Parameters:
property - action name
Returns:
the action

setInstanceClass

public void setInstanceClass(java.lang.String className)
Specify a custom class to use when instanciating this entity

Parameters:
className - the java class name

setCachingMethod

public void setCachingMethod(int caching)
Specify the caching method, see Cache for allowed constants.

Parameters:
caching - Caching method

addConstraint

public void addConstraint(java.lang.String column,
                          FieldConstraint constraint)

reverseEnginered

public void reverseEnginered()
Used by the framework to notify this entity that its reverse enginering is over


clearCache

public void clearCache()
Clear the cache


newInstance

public Instance newInstance()
create a new realisation of this entity

Returns:
the newly created instance

newInstance

public Instance newInstance(java.util.Map values)
builds a new instance from values contained in a Map

Parameters:
values - the Map containing the values
Returns:
the newly created instance

newInstance

public Instance newInstance(ReadOnlyMap values)
build a new instance from a DataAccessor object

Parameters:
values - the DataAccessor object containing the values
Returns:
the newly created instance

getInstance

public Instance getInstance(java.util.Map values)
get an instance whose values are in a map (by default, do not update instance values with map values if the instance is found in the cache)

Parameters:
values - the map containing the key values
Returns:
the instance

getInstance

public Instance getInstance(java.util.Map values,
                            boolean updateValues)
get an instance whose values are in a map

Parameters:
values - the map containing the values
updateValues - whether the instance should be updated from the map if found in the cache
Returns:
the instance

getInstance

public Instance getInstance(ReadOnlyMap values)
get an instance from its values contained in a DataAccessor object (by default, update all fields based on the values in the DataAccessor if the instance has been found in the cache)

Parameters:
values - the DataAccessor object containing the values
Returns:
the instance

getInstance

public Instance getInstance(ReadOnlyMap values,
                            boolean updateValues)
get an instance from a DataAccessor object

Parameters:
values - the DataAccessor object containing the values
updateValues - whether all values are to be read from the ReadOnlyMap if the instance has been found in the cache
Returns:
the instance

invalidateInstance

public void invalidateInstance(ReadOnlyMap instance)
                        throws java.sql.SQLException
Throws:
java.sql.SQLException

extractColumnValues

protected void extractColumnValues(ReadOnlyMap source,
                                   java.util.Map target)
                            throws java.sql.SQLException
extract column values from an input DataAccessor source and store result in target

Parameters:
source - ReadOnlyMap source object
target - Map target object
Throws:
java.sql.SQLException

buildKey

protected java.lang.Object buildKey(ReadOnlyMap values)
                             throws java.sql.SQLException
build the key for the Cache from a DataAccessor

Parameters:
values - the DataAccessor containing all values
Returns:
an array containing all key values
Throws:
java.sql.SQLException - the getter of the DataAccessor throws an SQLException

getName

public java.lang.String getName()
getter for the name of this entity

Returns:
the name of the entity

rename

public void rename(java.lang.String name)
set the name of this entity ** DO NOT USE DIRECTLY **

Parameters:
name - new name

getPKCols

public java.util.List<java.lang.String> getPKCols()
getter for the list of key column names

Returns:
the list of key column names

getColumns

public java.util.List<java.lang.String> getColumns()
getter for the list of column names

Returns:
the list of column names

insert

public boolean insert(ReadOnlyMap values)
               throws java.sql.SQLException
insert a new row based on values of a map

Parameters:
values - the Map object containing the values
Returns:
success indicator
Throws:
java.sql.SQLException

update

public boolean update(ReadOnlyMap values)
update a row based on a set of values that must contain kety values

Parameters:
values - the Map object containing the values
Returns:
success indicator

delete

public boolean delete(ReadOnlyMap values)
delete a row based on (key) values

Parameters:
values - the Map containing the values
Returns:
success indicator

fetch

public Instance fetch(java.util.List values)
               throws java.sql.SQLException
fetch an instance from key values stored in a List in natural order

Parameters:
values - the List containing the key values
Returns:
the fetched instance
Throws:
java.sql.SQLException

fetch

public Instance fetch(ReadOnlyMap values)
               throws java.sql.SQLException
fetch an instance from key values stored in a Map

Parameters:
values - the Map containing the key values
Returns:
the fetched instance
Throws:
java.sql.SQLException

fetch

public Instance fetch(java.lang.String keyValue)
               throws java.sql.SQLException
fetch an instance from its key value as a string

Parameters:
keyValue - the key
Returns:
the fetched instance
Throws:
java.sql.SQLException

fetch

public Instance fetch(java.lang.Number keyValue)
               throws java.sql.SQLException
fetch an instance from its key value specified as a Number

Parameters:
keyValue - the key
Returns:
the fetched instance
Throws:
java.sql.SQLException

getFetchQuery

public java.lang.String getFetchQuery()
get the SQL query string used to fetch one instance of this query

Returns:
the SLQ query

buildFetchQuery

protected void buildFetchQuery()
build the SQL query used to fetch one instance of this query


query

public RowIterator query()
                  throws java.sql.SQLException
issue a query to iterate though all instances of this entity

Returns:
the resulting RowIterator
Throws:
java.sql.SQLException

query

public RowIterator query(java.util.List refineCriteria,
                         java.lang.String order)
                  throws java.sql.SQLException
issue a query to iterate thought instances of this entity, with a facultative refining criteria and a facultative order by clause

Parameters:
refineCriteria - a refining criteria or null to get all instances
order - an 'order by' clause or null to get instances in their natural order
Returns:
the resulting RowIterator
Throws:
java.sql.SQLException

getDB

public Database getDB()
get the database connection

Returns:
the database connection

isReadOnly

public boolean isReadOnly()
Is this entity read-only or read-write?

Returns:
whether this entity is read-only or not

setReadOnly

public void setReadOnly(boolean readOnly)
set this entity to be read-only or read-write

Parameters:
readOnly - the mode to switch to : true for read-only, false for read-write

setTableName

public void setTableName(java.lang.String table)
set the name of the table mapped by this entity

Parameters:
table - the table mapped by this entity read-write

getTableName

public java.lang.String getTableName()
get the name of the mapped table

Returns:
name of the mapped table

setObfuscated

public void setObfuscated(java.util.List columns)
indicates a column as being obfuscated

Parameters:
columns - list of obfuscated columns

isObfuscated

public boolean isObfuscated(java.lang.String column)
returns whether the given column is obfuscated

Parameters:
column - the name of the column
Returns:
a boolean indicating whether this column is obfuscated

obfuscate

public java.lang.String obfuscate(java.lang.Object value)
obfuscate given value

Parameters:
value - value to obfuscate
Returns:
obfuscated value

filterID

public java.lang.Object filterID(java.lang.Long id)
obfuscate this id value if needed


deobfuscate

public java.lang.String deobfuscate(java.lang.Object value)
de-obfuscate given value

Parameters:
value - value to de-obfuscate
Returns:
obfuscated value

setLocalized

public void setLocalized(java.util.List columns)
indicates a column as being localized

Parameters:
columns - list of localized columns

isLocalized

public boolean isLocalized(java.lang.String column)
returns whether the given column is obfuscated

Parameters:
column - the name of the column
Returns:
a boolean indicating whether this column is obfuscated

hasLocalizedColumns

public boolean hasLocalizedColumns()
does this entity have localized columns ?


validate

public boolean validate(ReadOnlyMap row,
                        UserContext userContext)
                 throws java.sql.SQLException
validate a set of values

Throws:
java.sql.SQLException

findImportedKey

public ImportedKey findImportedKey(Entity pkEntity,
                                   java.util.List<java.lang.String> fkCols)

findExportedKey

public ExportedKey findExportedKey(Entity fkEntity,
                                   java.util.List<java.lang.String> fkCols)


~ooOoo~