Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.objectstyle.cayenne.access.util
Class DefaultSorter  view DefaultSorter download DefaultSorter.java

java.lang.Object
  extended byorg.objectstyle.cayenne.access.util.DefaultSorter
All Implemented Interfaces:
DependencySorter

public class DefaultSorter
extends java.lang.Object
implements DependencySorter

DefaultSorter is a default implementation of DependencySorter based on ASHWOOD library. Presently it works for acyclic database schemas with possible multi-reflexive tables. The class uses topological sorting from ASHWOOD.


Nested Class Summary
private static class DefaultSorter.ComponentRecord
           
private  class DefaultSorter.DbEntityComparator
           
private  class DefaultSorter.ObjEntityComparator
           
private  class DefaultSorter.TableComparator
           
 
Field Summary
protected  java.util.Map components
           
protected  org.objectstyle.ashwood.graph.Digraph contractedReferentialDigraph
           
protected  DefaultSorter.DbEntityComparator dbEntityComparator
           
protected  java.util.Map dbEntityToTableMap
           
protected  boolean dirty
           
protected  DefaultSorter.ObjEntityComparator objEntityComparator
           
protected  org.objectstyle.cayenne.access.QueryEngine queryEngine
           
protected  org.objectstyle.ashwood.graph.Digraph referentialDigraph
           
protected  java.util.Map reflexiveDbEntities
           
protected  DefaultSorter.TableComparator tableComparator
           
 
Constructor Summary
DefaultSorter(org.objectstyle.cayenne.access.QueryEngine queryEngine)
           
 
Method Summary
protected  void _indexSorter()
          Reindexes internal sorter.
protected  void fillInMetadata(org.objectstyle.ashwood.dbutil.Table table, org.objectstyle.cayenne.map.DbEntity entity)
           
protected  org.objectstyle.cayenne.DataObject findReflexiveMaster(org.objectstyle.cayenne.DataObject obj, org.objectstyle.cayenne.map.ObjRelationship toOneRel, java.lang.Class targetClass)
           
protected  java.util.Comparator getDbEntityComparator(boolean dependantFirst)
           
protected  java.util.Comparator getObjEntityComparator(boolean dependantFirst)
           
protected  org.objectstyle.ashwood.dbutil.Table getTable(org.objectstyle.cayenne.map.DbEntity dbEntity)
           
protected  org.objectstyle.ashwood.dbutil.Table getTable(org.objectstyle.cayenne.map.ObjEntity objEntity)
           
 void indexSorter(org.objectstyle.cayenne.access.QueryEngine queryEngine)
          Marks this instance as "dirty", so that it will be indexed lazily on the next invocation.
protected  boolean isReflexive(org.objectstyle.cayenne.map.DbEntity metadata)
           
 void sortDbEntities(java.util.List dbEntities, boolean deleteOrder)
          Sorts a list of DbEntities.
 void sortObjectsForEntity(org.objectstyle.cayenne.map.ObjEntity objEntity, java.util.List objects, boolean deleteOrder)
          Sorts a list of objects belonging to the ObjEntity.
 void sortObjEntities(java.util.List objEntities, boolean deleteOrder)
          Sorts a list of ObjEntities.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

queryEngine

protected org.objectstyle.cayenne.access.QueryEngine queryEngine

dbEntityToTableMap

protected java.util.Map dbEntityToTableMap

referentialDigraph

protected org.objectstyle.ashwood.graph.Digraph referentialDigraph

contractedReferentialDigraph

protected org.objectstyle.ashwood.graph.Digraph contractedReferentialDigraph

components

protected java.util.Map components

reflexiveDbEntities

protected java.util.Map reflexiveDbEntities

tableComparator

protected DefaultSorter.TableComparator tableComparator

dbEntityComparator

protected DefaultSorter.DbEntityComparator dbEntityComparator

objEntityComparator

protected DefaultSorter.ObjEntityComparator objEntityComparator

dirty

protected boolean dirty
Constructor Detail

DefaultSorter

public DefaultSorter(org.objectstyle.cayenne.access.QueryEngine queryEngine)
Method Detail

indexSorter

public void indexSorter(org.objectstyle.cayenne.access.QueryEngine queryEngine)
Marks this instance as "dirty", so that it will be indexed lazily on the next invocation.

Specified by:
indexSorter in interface DependencySorter

_indexSorter

protected void _indexSorter()
Reindexes internal sorter.


sortDbEntities

public void sortDbEntities(java.util.List dbEntities,
                           boolean deleteOrder)
Description copied from interface: DependencySorter
Sorts a list of DbEntities.

Specified by:
sortDbEntities in interface DependencySorter

sortObjEntities

public void sortObjEntities(java.util.List objEntities,
                            boolean deleteOrder)
Description copied from interface: DependencySorter
Sorts a list of ObjEntities.

Specified by:
sortObjEntities in interface DependencySorter

sortObjectsForEntity

public void sortObjectsForEntity(org.objectstyle.cayenne.map.ObjEntity objEntity,
                                 java.util.List objects,
                                 boolean deleteOrder)
Description copied from interface: DependencySorter
Sorts a list of objects belonging to the ObjEntity.

Specified by:
sortObjectsForEntity in interface DependencySorter

fillInMetadata

protected void fillInMetadata(org.objectstyle.ashwood.dbutil.Table table,
                              org.objectstyle.cayenne.map.DbEntity entity)

findReflexiveMaster

protected org.objectstyle.cayenne.DataObject findReflexiveMaster(org.objectstyle.cayenne.DataObject obj,
                                                                 org.objectstyle.cayenne.map.ObjRelationship toOneRel,
                                                                 java.lang.Class targetClass)

getDbEntityComparator

protected java.util.Comparator getDbEntityComparator(boolean dependantFirst)

getObjEntityComparator

protected java.util.Comparator getObjEntityComparator(boolean dependantFirst)

getTable

protected org.objectstyle.ashwood.dbutil.Table getTable(org.objectstyle.cayenne.map.DbEntity dbEntity)

getTable

protected org.objectstyle.ashwood.dbutil.Table getTable(org.objectstyle.cayenne.map.ObjEntity objEntity)

isReflexive

protected boolean isReflexive(org.objectstyle.cayenne.map.DbEntity metadata)