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
private  Entity entity
          The wrapped entity.
private  java.lang.String order
          Specified order.
private  java.util.List<java.lang.String> refineCriteria
          Specified refining criteria.
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
EntityReference(Entity entity)
          Builds a new EntityReference.
 
Method Summary
 void clearRefinement()
          Clears any refinement made on this entity.
 boolean delete(java.util.Map<java.lang.String,java.lang.Object> values)
          Detele a row from this entity's table.
 Instance fetch(java.util.List<java.lang.Object> values)
          Fetch an Instance of this entity, specifying the values of its key columns in their natural order.
 Instance fetch(java.util.Map<java.lang.String,java.lang.Object> 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()
          Get all the rows in a list of maps.
 boolean insert(java.util.Map<java.lang.String,java.lang.Object> 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.
 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<java.lang.String,java.lang.Object> values)
          Update a row in this entity's table.
 boolean validate(java.util.Map<java.lang.String,java.lang.Object> 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

private Entity entity
The wrapped entity.


order

private java.lang.String order
Specified order.


refineCriteria

private java.util.List<java.lang.String> refineCriteria
Specified refining criteria.

Constructor Detail

EntityReference

public EntityReference(Entity entity)
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<java.lang.String,java.lang.Object> 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.error 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<java.lang.String,java.lang.Object> 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.error can be checked).

delete

public boolean delete(java.util.Map<java.lang.String,java.lang.Object> 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.error can be checked).

fetch

public Instance fetch(java.util.List<java.lang.Object> 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.error can be checked)

fetch

public Instance fetch(java.util.Map<java.lang.String,java.lang.Object> 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.error 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.error 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.error 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()
Get 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 ew one is appended (but successive calls to this method overwrite previous ones).

postfix " DESC " to a column for descending order.

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<java.lang.String,java.lang.Object> 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~