1 package mir.entity.adapter;
7 public class EntityAdapterDefinition {
10 public EntityAdapterDefinition() {
11 calculatedFields = new HashMap();
14 public EntityAdapter makeEntityAdapter(Entity anEntity) {
15 return new EntityAdapter(anEntity, this);
18 public CalculatedField getCalculatedField(String aFieldName) {
19 return (CalculatedField) calculatedFields.get(aFieldName);
22 public boolean hasCalculatedField(String aFieldName) {
23 return calculatedFields.containsKey(aFieldName);
26 public void addCalculatedField(String aFieldName, CalculatedField aField) {
27 calculatedFields.put(aFieldName, aField);
30 public void addDateField(String aDestinationFieldName, String aSourceFieldName) {
31 addCalculatedField(aDestinationFieldName, new DateField(aSourceFieldName));
34 public interface CalculatedField {
35 public Object getValue(EntityAdapter anEntityAdapter);
38 private class DateField implements CalculatedField {
39 private String fieldName;
41 public DateField(String aFieldName) {
42 fieldName = aFieldName;
45 public Object getValue(EntityAdapter anEntityAdapter) {
46 Map result = new HashMap();
47 String textValue = anEntityAdapter.getEntity().getValue(fieldName);
48 Calendar calendar = GregorianCalendar.getInstance();
54 if (textValue!=null) {
56 year = Integer.parseInt(textValue.substring(0,4));
57 month = Integer.parseInt(textValue.substring(4,6));
58 day = Integer.parseInt(textValue.substring(6,8));
60 calendar.set(year, month, day);
61 date = calendar.getTime();
63 result.put("date", date);
64 result.put("year", textValue.substring(0,4));
65 result.put("month", textValue.substring(4,6));
66 result.put("day", textValue.substring(6,8));
69 result.put("date", null);
70 result.put("year", null);
71 result.put("month", null);
72 result.put("day", null);
80 static protected Object getRelation(StorageObject aStorageObject, String aWhereClause, String anOrderByClause, EntityAdapterDefinition aDefinition) {
83 new EntityIteratorAdapter(
84 new EntityBrowser( aStorageObject, aWhereClause, anOrderByClause, -1),
88 throw new RuntimeException(t.getMessage());