org.ujoframework.implementation.orm
Class OrmTable<UJO_IMPL extends Ujo>

java.lang.Object
  extended by org.ujoframework.extensions.AbstractUjo
      extended by org.ujoframework.implementation.quick.QuickUjo
          extended by org.ujoframework.implementation.orm.OrmTable<UJO_IMPL>
All Implemented Interfaces:
UjoCloneable, UjoTextable, OrmUjo, Ujo
Direct Known Subclasses:
Database, Item, Order, ViewOrder

public class OrmTable<UJO_IMPL extends Ujo>
extends QuickUjo
implements OrmUjo

A simple implementation of an ORM solution. Why a new ORM mapping?

Some other features: The sample of use:
  /** Using INSERT */
  public void useCreateItem() {

      Order order = new Order();
      order.set(Order.DATE, new Date());
      order.set(Order.DESCR, "John's order");

      Item item = new Item();
      item.set(Item.ORDER, order);
      item.set(Item.DESCR, "Yellow table");

      Session session = OrmHandler.getInstance().getSession();
      session.save(order);
      session.save(item);
      session.commit();
  }


  /** Using SELECT by QUERY */
  public void useSelection() {

      Criterion<Order> crn1 = Criterion.newInstance(Order.DESCR, "John's order");
      Criterion<Order> crn2 = Criterion.newInstance(Order.DATE, Operator.LE, new Date());
      Criterion<Order> crit = crn1.and(crn2);

      Session session = OrmHandler.getInstance().getSession();
      UjoIterator<Order> orders = session.createQuery(crit).iterate();

      for (Order order : orders ) {
          Long id = order.get(Order.ID);
          String descr = order.get(Order.DESCR);
          System.out.println("Order id: " + id + " descr: " + descr);
      }
  }

  /** Using SELECT by an object relation(s) */
  public void useRelation() {

      Session session = OrmHandler.getInstance().getSession();
      BoDatabase db = session.getDatabase();
      UjoIterator<Order> orders = db.get(BoDatabase.ORDERS);

      for (Order order : orders) {
          Long id = order.get(Order.ID);
          String descr = order.get(Order.DESCR);
          System.out.println("Order id: " + id + " descr: " + descr);

          for (Item item : order.get(Order.ITEMS)) {
              Long itemId = item.get(Item.ID);
              String itemDescr = item.get(Item.DESCR);
              System.out.println(" Item id: " + itemId + " descr: " + itemDescr);
          }
      }
  }

Author:
Pavel Ponec
See Also:
RelationToMany, UjoIterator

Field Summary
 
Fields inherited from class org.ujoframework.implementation.quick.QuickUjo
data
 
Constructor Summary
OrmTable()
           
 
Method Summary
<UJO extends UJO_IMPL,VALUE>
VALUE
get(UjoProperty<UJO,VALUE> property)
          Getter based on UjoProperty implemeted by a pattern UjoExt
protected static
<UJO extends OrmTable,ITEM extends OrmTable>
RelationToMany<UJO,ITEM>
newRelation(java.lang.String name, java.lang.Class<ITEM> type)
          A PropertyIterator Factory creates an new property and assign a next index.
 boolean readAuthorization(UjoAction action, UjoProperty property, java.lang.Object value)
          Test an authorization of the action.
 UjoProperty[] readChangedProperties(boolean clear)
          Returns a changed properties.
 Session readSession()
          Read a session
 java.lang.Object readValue(UjoProperty property)
          A method for an internal use only.
<UJO extends UJO_IMPL,VALUE>
UJO_IMPL
set(UjoProperty<UJO,VALUE> property, VALUE value)
          Setter based on UjoProperty.
 void writeSession(Session session)
          Write a session
 void writeValue(UjoProperty property, java.lang.Object value)
          A method for an internal use only.
 
Methods inherited from class org.ujoframework.implementation.quick.QuickUjo
newListProperty, newProperty, newProperty, newProperty, newProperty, newProperty, newProperty
 
Methods inherited from class org.ujoframework.extensions.AbstractUjo
clone, equals, init, init, readProperties, readUjoManager, readValueString, toString, writeValueString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.ujoframework.Ujo
readProperties
 

Constructor Detail

OrmTable

public OrmTable()
Method Detail

writeValue

public void writeValue(UjoProperty property,
                       java.lang.Object value)
A method for an internal use only.

Specified by:
writeValue in interface Ujo
Overrides:
writeValue in class QuickUjo
Parameters:
property - Property must be a direct type only!
See Also:
Property.setValue(Ujo,Object)

readValue

public java.lang.Object readValue(UjoProperty property)
A method for an internal use only.

Specified by:
readValue in interface OrmUjo
Specified by:
readValue in interface Ujo
Overrides:
readValue in class QuickUjo
Parameters:
property - Property must be a direct type only!
Returns:
Property value
See Also:
Property.getValue(Ujo)

readChangedProperties

public UjoProperty[] readChangedProperties(boolean clear)
Returns a changed properties. The method is not the thread save.

Specified by:
readChangedProperties in interface OrmUjo
Parameters:
clear - True value clears the property changes.

get

public final <UJO extends UJO_IMPL,VALUE> VALUE get(UjoProperty<UJO,VALUE> property)
Getter based on UjoProperty implemeted by a pattern UjoExt


set

public final <UJO extends UJO_IMPL,VALUE> UJO_IMPL set(UjoProperty<UJO,VALUE> property,
                                                       VALUE value)
Setter based on UjoProperty. Type of value is checked in the runtime. The method was implemented by a pattern UjoExt.


readSession

public Session readSession()
Read a session

Specified by:
readSession in interface OrmUjo

writeSession

public void writeSession(Session session)
Write a session

Specified by:
writeSession in interface OrmUjo

readAuthorization

public boolean readAuthorization(UjoAction action,
                                 UjoProperty property,
                                 java.lang.Object value)
Test an authorization of the action.

Specified by:
readAuthorization in interface Ujo
Overrides:
readAuthorization in class AbstractUjo
Parameters:
action - Type of request. See constant(s) ACTION_* for more information. The action must not be null, however there is allowed to use a dummy constant UjoAction.DUMMY .
property - A property of the Ujo
value - A value
Returns:
Returns TRUE, if property is authorized.
See Also:
Action Constants

newRelation

protected static <UJO extends OrmTable,ITEM extends OrmTable> RelationToMany<UJO,ITEM> newRelation(java.lang.String name,
                                                                                                   java.lang.Class<ITEM> type)
A PropertyIterator Factory creates an new property and assign a next index.



Copyright © 2009. All Rights Reserved.