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) {
18 if (aKey instanceof String)
19 return entity.hasValueForField((String) aKey)
20 || definition.hasCalculatedField((String) aKey);
25 public boolean equals(Object anObject) {
26 return anObject instanceof EntityAdapter
27 && ((EntityAdapter) anObject).entity.equals(entity);
30 public int hashCode() {
31 return entity.hashCode();
34 protected Entity getEntity() {
38 public Object get(Object aKey) {
41 if (calculatedFieldsCache.containsKey(aKey)) {
42 return calculatedFieldsCache.get(aKey);
44 else if (aKey instanceof String && definition.hasCalculatedField((String) aKey)) {
45 result = definition.getCalculatedField((String) aKey).getValue(this);
46 calculatedFieldsCache.put(aKey, result);
50 else if (aKey instanceof String) {
51 return entity.getValue((String) aKey);
58 public boolean isEmpty() {
59 throw new UnsupportedOperationException("EntityAdapter.isEmpty()");
63 throw new UnsupportedOperationException("EntityAdapter.keySet()");
66 public Object put(Object aKey, Object value) {
67 throw new UnsupportedOperationException("EntityAdapter.put()");
70 public void putAll(Map t) {
71 throw new UnsupportedOperationException("EntityAdapter.putAll()");
74 public Object remove(Object aKey) {
75 throw new UnsupportedOperationException("EntityAdapter.remove()");
79 throw new UnsupportedOperationException("EntityAdapter.size()");
82 public Collection values() {
83 throw new UnsupportedOperationException("EntityAdapter.values()");
87 throw new UnsupportedOperationException("EntityAdapter.clear()");
90 public boolean containsValue(Object value) {
91 throw new UnsupportedOperationException("EntityAdapter.containsValue()");
94 public Set entrySet() {
95 throw new UnsupportedOperationException("EntityAdapter.entrySet()");