Package org.apache.cayenne.ashwood

## Class AshwoodEntitySorter

- java.lang.Object
- - org.apache.cayenne.ashwood.AshwoodEntitySorter

- All Implemented Interfaces:
    `EntitySorter`
  Direct Known Subclasses:
    `WeightedAshwoodEntitySorter`

      public class AshwoodEntitySorter
      extends Object
      implements EntitySorter

  Implements dependency sorting algorithms for ObjEntities, DbEntities and DataObjects. Presently it works for acyclic database schemas with possible multi-reflexive tables.
  Since:
    3.1

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<DbEntity,​org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord>` | `components` |
    `protected Comparator<DbEntity>` | `dbEntityComparator` |
    `protected EntityResolver` | `entityResolver` |
    `protected Comparator<ObjEntity>` | `objEntityComparator` |
    `protected Map<DbEntity,​List<DbRelationship>>` | `reflexiveDbEntities` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AshwoodEntitySorter()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `doIndexSorter()` | Reindexes internal sorter without synchronization.
    `protected Object` | `findReflexiveMaster​(Persistent object, ObjRelationship toOneRel, String targetEntityName)` |
    `protected Comparator<DbEntity>` | `getDbEntityComparator​(boolean dependantFirst)` |
    `protected Comparator<ObjEntity>` | `getObjEntityComparator​(boolean dependantFirst)` |
    `protected void` | `indexSorter()` | Reindexes internal sorter in a thread-safe manner.
    `protected boolean` | `isReflexive​(DbEntity metadata)` |
    `void` | `setEntityResolver​(EntityResolver entityResolver)` | Sets EntityResolver for this sorter.
    `void` | `sortDbEntities​(List<DbEntity> dbEntities, boolean deleteOrder)` | Sorts a list of DbEntities.
    `void` | `sortObjectsForEntity​(ObjEntity objEntity, List<?> objects, boolean deleteOrder)` | Sorts a list of objects belonging to the ObjEntity.
    `void` | `sortObjEntities​(List<ObjEntity> 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

    - #### entityResolver

          protected EntityResolver entityResolver

    - #### components

          protected Map<DbEntity,​org.apache.cayenne.ashwood.AshwoodEntitySorter.ComponentRecord> components

    - #### reflexiveDbEntities

          protected Map<DbEntity,​List<DbRelationship>> reflexiveDbEntities

    - #### dbEntityComparator

          protected Comparator<DbEntity> dbEntityComparator

    - #### objEntityComparator

          protected Comparator<ObjEntity> objEntityComparator

  - ### Constructor Detail

    - #### AshwoodEntitySorter

          public AshwoodEntitySorter()

  - ### Method Detail

    - #### indexSorter

          protected void indexSorter()

      Reindexes internal sorter in a thread-safe manner.

    - #### doIndexSorter

          protected void doIndexSorter()

      Reindexes internal sorter without synchronization.

    - #### setEntityResolver

          public void setEntityResolver​(EntityResolver entityResolver)

      Description copied from interface: `EntitySorter`
      Sets EntityResolver for this sorter. All entities present in the resolver will be used to determine sort ordering.
      Specified by:
        `setEntityResolver` in interface `EntitySorter`
      Since:
        3.1

    - #### sortDbEntities

          public void sortDbEntities​(List<DbEntity> dbEntities,
                                     boolean deleteOrder)

      Description copied from interface: `EntitySorter`
      Sorts a list of DbEntities.
      Specified by:
        `sortDbEntities` in interface `EntitySorter`

    - #### sortObjEntities

          public void sortObjEntities​(List<ObjEntity> objEntities,
                                      boolean deleteOrder)

      Description copied from interface: `EntitySorter`
      Sorts a list of ObjEntities.
      Specified by:
        `sortObjEntities` in interface `EntitySorter`

    - #### sortObjectsForEntity

          public void sortObjectsForEntity​(ObjEntity objEntity,
                                           List<?> objects,
                                           boolean deleteOrder)

      Description copied from interface: `EntitySorter`
      Sorts a list of objects belonging to the ObjEntity.
      Specified by:
        `sortObjectsForEntity` in interface `EntitySorter`

    - #### findReflexiveMaster

          protected Object findReflexiveMaster​(Persistent object,
                                               ObjRelationship toOneRel,
                                               String targetEntityName)

    - #### getDbEntityComparator

          protected Comparator<DbEntity> getDbEntityComparator​(boolean dependantFirst)

    - #### getObjEntityComparator

          protected Comparator<ObjEntity> getObjEntityComparator​(boolean dependantFirst)

    - #### isReflexive

          protected boolean isReflexive​(DbEntity metadata)