X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fentity%2Fadapter%2FEntityAdapter.java;h=2fff4d20d3e3754bd0edb514473ba788636d5a95;hb=97488204d3bc9d251b525a70b2cf0c70956a3484;hp=e22398163e5b81a4c83b59029640b7955b02ea40;hpb=d1fe8297d584e69a5d2bed84cc979d8bdd13cb31;p=mir.git diff --git a/source/mir/entity/adapter/EntityAdapter.java b/source/mir/entity/adapter/EntityAdapter.java index e2239816..2fff4d20 100755 --- a/source/mir/entity/adapter/EntityAdapter.java +++ b/source/mir/entity/adapter/EntityAdapter.java @@ -39,6 +39,16 @@ import java.util.Set; import mir.entity.Entity; import mir.util.CachingRewindableIterator; +/** An EntityAdapter is a wrapper around an Entity meant to add + * missing functionality. It provides "calculated fields" + * which mir installations can extend reasonably easilly. + * "calculated fields" compute values that are not directly present + * in the db table. For example: + * a field to have the number of comments associated with an article; + * a field to get the list of hidden comments associated with an article; + * etc. + *

This whole framework is meant to be replaced by hibernate

+ */ public class EntityAdapter implements Map { private Entity entity; private EntityAdapterDefinition definition; @@ -159,10 +169,7 @@ public class EntityAdapter implements Map { public Object getRelation(String aWhereClause, String anOrderByClause, String aDefinition) { try { - return - new CachingRewindableIterator( - new EntityIteratorAdapter( - aWhereClause, anOrderByClause, -1, getModel(), aDefinition)); + return EntityAdapterEngine.retrieveAdapterList(model, aDefinition, aWhereClause, anOrderByClause, -1, 0); } catch (Throwable t) { throw new RuntimeException(t.getMessage()); @@ -171,15 +178,30 @@ public class EntityAdapter implements Map { public EntityAdapter getToOneRelation(String aWhereClause, String anOrderByClause, String aDefinition) { try { - Iterator i = new EntityIteratorAdapter(aWhereClause, anOrderByClause, -1, getModel(), aDefinition); + Iterator i = new EntityIteratorAdapter(aWhereClause, anOrderByClause, 1, getModel(), aDefinition, 1, 0); + + if (i.hasNext()) + return (EntityAdapter) i.next(); + return null; + } + catch (Throwable t) { + throw new RuntimeException(t.getMessage()); + } + } + + public EntityAdapter getComplexToOneRelation(String aMainTablePrefix, List someExtraTables, + String aWhereClause, String anOrderByClause, String aDefinition) { + try { + Iterator i = new EntityIteratorAdapter(aMainTablePrefix, someExtraTables, aWhereClause, anOrderByClause, -1, + getModel(), aDefinition, 1, 0); if (i.hasNext()) return (EntityAdapter) i.next(); - else - return null; + return null; } catch (Throwable t) { throw new RuntimeException(t.getMessage()); } } + } \ No newline at end of file