1 package mir.entity.adapter;
6 public class EntityAdapter implements Map {
8 private EntityAdapterDefinition definition;
9 private Map calculatedFieldsCache;
11 public EntityAdapter(Entity anEntity, EntityAdapterDefinition aDefinition) {
13 definition = aDefinition;
14 calculatedFieldsCache = new HashMap();
17 public boolean containsKey(Object aKey) {
19 if (aKey instanceof String)
20 return entity.hasValueForField((String) aKey)
21 || definition.hasCalculatedField((String) aKey)
22 || entity.getFields().contains(aKey);
30 public boolean equals(Object anObject) {
31 return anObject instanceof EntityAdapter
32 && ((EntityAdapter) anObject).entity.equals(entity);
35 public int hashCode() {
36 return entity.hashCode();
39 public Entity getEntity() {
43 public Object get(Object aKey) {
46 if (calculatedFieldsCache.containsKey(aKey)) {
47 return calculatedFieldsCache.get(aKey);
49 else if (aKey instanceof String && definition.hasCalculatedField((String) aKey)) {
50 result = definition.getCalculatedField((String) aKey).getValue(this);
51 calculatedFieldsCache.put(aKey, result);
55 else if (aKey instanceof String) {
56 return entity.getValue((String) aKey);
63 public boolean isEmpty() {
64 throw new UnsupportedOperationException("EntityAdapter.isEmpty()");
68 throw new UnsupportedOperationException("EntityAdapter.keySet()");
71 public Object put(Object aKey, Object value) {
72 throw new UnsupportedOperationException("EntityAdapter.put()");
75 public void putAll(Map t) {
76 throw new UnsupportedOperationException("EntityAdapter.putAll()");
79 public Object remove(Object aKey) {
80 throw new UnsupportedOperationException("EntityAdapter.remove()");
84 throw new UnsupportedOperationException("EntityAdapter.size()");
87 public Collection values() {
88 throw new UnsupportedOperationException("EntityAdapter.values()");
92 throw new UnsupportedOperationException("EntityAdapter.clear()");
95 public boolean containsValue(Object value) {
96 throw new UnsupportedOperationException("EntityAdapter.containsValue()");
99 public Set entrySet() {
100 throw new UnsupportedOperationException("EntityAdapter.entrySet()");