1 package mir.entity.adapter;
7 public class EntityAdapter implements Map {
9 private EntityAdapterDefinition definition;
10 private Map calculatedFieldsCache;
11 private EntityAdapterModel model;
13 public EntityAdapter(Entity anEntity, EntityAdapterDefinition aDefinition, EntityAdapterModel aModel) {
15 definition = aDefinition;
16 calculatedFieldsCache = new HashMap();
20 public boolean containsKey(Object aKey) {
22 if (aKey instanceof String)
23 return entity.hasValueForField((String) aKey)
24 || definition.hasCalculatedField((String) aKey)
25 || entity.getFields().contains(aKey);
33 public boolean equals(Object anObject) {
34 return anObject instanceof EntityAdapter
35 && ((EntityAdapter) anObject).entity.equals(entity);
38 public int hashCode() {
39 return entity.hashCode();
42 public Entity getEntity() {
46 public EntityAdapterModel getModel() {
50 public Object get(Object aKey) {
53 if (calculatedFieldsCache.containsKey(aKey)) {
54 return calculatedFieldsCache.get(aKey);
56 else if (aKey instanceof String && definition.hasCalculatedField((String) aKey)) {
57 result = definition.getCalculatedField((String) aKey).getValue(this);
58 calculatedFieldsCache.put(aKey, result);
62 else if (aKey instanceof String) {
63 return entity.getValue((String) aKey);
70 public boolean isEmpty() {
71 throw new UnsupportedOperationException("EntityAdapter.isEmpty()");
75 throw new UnsupportedOperationException("EntityAdapter.keySet()");
78 public Object put(Object aKey, Object value) {
79 throw new UnsupportedOperationException("EntityAdapter.put()");
82 public void putAll(Map t) {
83 throw new UnsupportedOperationException("EntityAdapter.putAll()");
86 public Object remove(Object aKey) {
87 throw new UnsupportedOperationException("EntityAdapter.remove()");
91 throw new UnsupportedOperationException("EntityAdapter.size()");
94 public Collection values() {
95 throw new UnsupportedOperationException("EntityAdapter.values()");
99 throw new UnsupportedOperationException("EntityAdapter.clear()");
102 public boolean containsValue(Object value) {
103 throw new UnsupportedOperationException("EntityAdapter.containsValue()");
106 public Set entrySet() {
107 throw new UnsupportedOperationException("EntityAdapter.entrySet()");
110 public Object getRelation(String aWhereClause, String anOrderByClause, String aDefinition) {
113 new CachingRewindableIterator(
114 new EntityIteratorAdapter(
115 aWhereClause, anOrderByClause, -1, getModel(), aDefinition));
117 catch (Throwable t) {
118 throw new RuntimeException(t.getMessage());