velosurf.context
Class EntityReference

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList
          extended by velosurf.context.EntityReference
All Implemented Interfaces:
java.lang.Iterable, java.util.Collection, java.util.List

public class EntityReference
extends java.util.AbstractList

Context wrapper for an entity.

Author:
Claude Brisson

Field Summary
protected  Entity entity
          the wrapped entity
protected  java.lang.String order
          specified order
protected  java.util.List refineCriteria
          specified refining criteria
protected  UserContext userContext
          user context to give to created instances
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
EntityReference(Entity entity)
          Builds a new EntityReference.
EntityReference(Entity entity, UserContext userContext)
          Builds a new EntityReference.
 
Method Summary
 void clearRefinement()
          Clears any refinement made on this entity
 boolean delete(java.util.Map values)
          Detele a row from this entity's table.
 Instance fetch(java.util.List values)
          Fetch an Instance of this entity, specifying the values of its key columns in their natural order.
 Instance fetch(java.util.Map values)
          Fetch an Instance of this entity, specifying the values of its key columns in the map.
 Instance fetch(java.lang.Number keyValue)
          Fetch an Instance of this entity, specifying the value of its unique key column as an integer
 Instance fetch(java.lang.String keyValue)
          Fetch an Instance of this entity, specifying the value of its unique key column as a string
 java.lang.Object get(int i)
          Dummy method.
 java.util.List getColumns()
          getter for the list of column names
 java.lang.Object getLastInsertID()
          Returns the ID of the last inserted row (obfuscated if needed)
 java.lang.String getName()
          gets the name of the wrapped entity
 java.util.List getRows()
          gets all the rows in a list of maps
 boolean insert(java.util.Map values)
          Insert a new row in this entity's table.
 java.util.Iterator iterator()
          Called by the #foreach directive.
 Instance newInstance()
          Create a new instance for this entity
 void refine(java.lang.String criterium)
          Refines this entity reference querying result: the provided criterium will be added to the 'where' clause (or a 'where' clause will be added).
 void setOrder(java.lang.String order)
          Specify an 'order by' clause for this attribute reference result.
 int size()
          Dummy method.
 boolean update(java.util.Map values)
          Update a row in this entity's table.
 boolean validate(java.util.Map values)
           
 
Methods inherited from class java.util.AbstractList
add, add, addAll, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList
 
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 

Field Detail

entity

protected Entity entity
the wrapped entity


order

protected java.lang.String order
specified order


refineCriteria

protected java.util.List refineCriteria
specified refining criteria


userContext

protected UserContext userContext
user context to give to created instances

Constructor Detail

EntityReference

public EntityReference(Entity entity)
Builds a new EntityReference.

Parameters:
entity - the wrapped entity

EntityReference

public EntityReference(Entity entity,
                       UserContext userContext)
Builds a new EntityReference.

Parameters:
entity - the wrapped entity
Method Detail

getName

public java.lang.String getName()
gets the name of the wrapped entity


insert

public boolean insert(java.util.Map values)
Insert a new row in this entity's table.

Parameters:
values - col -> value map
Returns:
true if successfull, false if an error occurs (in which case $db.lastError can be checked).

getLastInsertID

public java.lang.Object getLastInsertID()
Returns the ID of the last inserted row (obfuscated if needed)

Returns:
last insert ID

update

public boolean update(java.util.Map values)
Update a row in this entity's table.

Velosurf will ensure all key columns are specified, to avoid an accidental massive update.

Parameters:
values - col -> value map
Returns:
true if successfull, false if an error occurs (in which case $db.lastError can be checked).

delete

public boolean delete(java.util.Map values)
Detele a row from this entity's table.

Velosurf will ensure all key columns are specified, to avoid an accidental massive update.

Parameters:
values - col -> value map
Returns:
true if successfull, false if an error occurs (in which case $db.lastError can be checked).

fetch

public Instance fetch(java.util.List values)
Fetch an Instance of this entity, specifying the values of its key columns in their natural order.

Parameters:
values - values of the key columns
Returns:
an Instance, or null if an error occured (in which case $db.lastError can be checked)

fetch

public Instance fetch(java.util.Map values)
Fetch an Instance of this entity, specifying the values of its key columns in the map.

Parameters:
values - key=>value map
Returns:
an Instance, or null if an error occured (in which case $db.lastError can be checked)

fetch

public Instance fetch(java.lang.String keyValue)
Fetch an Instance of this entity, specifying the value of its unique key column as a string

Parameters:
keyValue - value of the key column
Returns:
an Instance, or null if an error occured (in which case $db.lastError can be checked)

fetch

public Instance fetch(java.lang.Number keyValue)
Fetch an Instance of this entity, specifying the value of its unique key column as an integer

Parameters:
keyValue - value of the key column
Returns:
an Instance, or null if an error occured (in which case $db.lastError can be checked)

iterator

public java.util.Iterator iterator()
Called by the #foreach directive.

Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.List
Overrides:
iterator in class java.util.AbstractList
Returns:
a RowIterator on all instances of this entity, possibly previously refined or ordered.

getRows

public java.util.List getRows()
gets all the rows in a list of maps

Returns:
a list of all the rows

refine

public void refine(java.lang.String criterium)
Refines this entity reference querying result: the provided criterium will be added to the 'where' clause (or a 'where' clause will be added).

This method can be called several times, thus allowing a field-by-field handling of an html search form.

All criteria will be merged with the sql 'and' operator (if there is an initial where clause, it is wrapped into parenthesis).

Example: if we issue the following calls from inside the template:

$person.refine("age>30")

$person.refine("salary>3000")

the resulting query that will be issed is:

select * from person where (age>30) and (salary>3000)

Parameters:
criterium - a valid sql condition

clearRefinement

public void clearRefinement()
Clears any refinement made on this entity


setOrder

public void setOrder(java.lang.String order)
Specify an 'order by' clause for this attribute reference result.

If an 'order by' clause is already present in the original query, the new one is appended (but successive calls to this method overwrite previous ones)

Pass it null or an empty string to clear any ordering.

Parameters:
order - valid sql column names (separated by commas) indicating the desired order

newInstance

public Instance newInstance()
Create a new instance for this entity

Returns:
null

validate

public boolean validate(java.util.Map values)

getColumns

public java.util.List getColumns()
getter for the list of column names

Returns:
the list of column names

get

public java.lang.Object get(int i)
Dummy method. Since this class has to appear as a Collection for Velocity, it extends the AbstractList class but only the iterator() method has a real meaning.

Specified by:
get in interface java.util.List
Specified by:
get in class java.util.AbstractList
Parameters:
i - ignored
Returns:
null

size

public int size()
Dummy method. Since this class has to appear as a Collection for Velocity, it extends the AbstractList class but only the iterator() method has a real meaning.

Specified by:
size in interface java.util.Collection
Specified by:
size in interface java.util.List
Specified by:
size in class java.util.AbstractCollection
Returns:
0


~ooOoo~