*/
package mir.entity.adapter;
-import java.util.Calendar;\r
-import java.util.Date;\r
-import java.util.GregorianCalendar;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.TimeZone;\r
-\r
-import mir.entity.Entity;\r
-import mir.misc.StringUtil;\r
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TimeZone;
+
+import mir.entity.Entity;
+import mir.misc.StringUtil;
import mir.util.GeneratorFormatAdapters;
+/**
+ * <code>EntityAdapterDefinition</code> defines the fields for an entity adapter of
+ * a particular "type". Custom calculated fields can be defined.
+ *
+ */
public class EntityAdapterDefinition {
private Map calculatedFields;
calculatedFields = new HashMap();
}
+ /**
+ *
+ *
+ * @param anEntity the entity that will be wrapped by the entity adapter
+ * @param aModel the base model
+ * @return the resulting entity adapter
+ */
public EntityAdapter makeEntityAdapter(Entity anEntity, EntityAdapterModel aModel) {
return new EntityAdapter(anEntity, this, aModel);
}
+ /**
+ *
+ * @param aFieldName
+ * @return the <code>CalculatedField</code> if it exists. <code>null</code> otherwise
+ */
public CalculatedField getCalculatedField(String aFieldName) {
return (CalculatedField) calculatedFields.get(aFieldName);
}
+ /**
+ *
+ * @param aFieldName
+ * @return
+ */
public boolean hasCalculatedField(String aFieldName) {
return calculatedFields.containsKey(aFieldName);
}
+ /**
+ *
+ * @param aFieldName
+ * @param aField
+ */
public void addCalculatedField(String aFieldName, CalculatedField aField) {
calculatedFields.put(aFieldName, aField);
}
+ /**
+ * To add a calculated field based on a "mir" date field: a string field of the form yyyyMMdd[hhmm]
+ *
+ * @param aDestinationFieldName
+ * @param aSourceFieldName
+ * @param aDefaultTimezone
+ */
public void addMirDateField(String aDestinationFieldName, String aSourceFieldName, String aDefaultTimezone) {
addCalculatedField(aDestinationFieldName, new MirDateField(aSourceFieldName, aDefaultTimezone));
}
+ /**
+ * Adds a calculated field based on a db date field
+ *
+ * @param aDestinationFieldName the field name of the calculated field
+ * @param aSourceFieldName the field name of the entity (must be a date field)
+ * @param aDefaultTimezone the default timezone to use
+ */
public void addDBDateField(String aDestinationFieldName, String aSourceFieldName, String aDefaultTimezone) {
addCalculatedField(aDestinationFieldName, new DBDateField(aSourceFieldName, aDefaultTimezone));
}
+ /**
+ * a calculated field: field gets its value from other fields.
+ */
public interface CalculatedField {
+ /**
+ * Method to retrieve the calculated value of the field.
+ *
+ * @param anEntityAdapter the entity
+ * @return the value of the field.
+ */
public Object getValue(EntityAdapter anEntityAdapter);
}
public Object getValue(EntityAdapter anEntityAdapter) {
Object result = null;
- String textValue = anEntityAdapter.getEntity().getValue(fieldName);
+ String textValue = anEntityAdapter.getEntity().getFieldValue(fieldName);
Calendar calendar = GregorianCalendar.getInstance();
int year;
int month;
public Object getValue(EntityAdapter anEntityAdapter) {
Object result = null;
- String text = anEntityAdapter.getEntity().getValue(fieldName);
+ String text = anEntityAdapter.getEntity().getFieldValue(fieldName);
if (text!=null) {
try {