package mir.producer;
+import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import mir.entity.adapter.EntityAdapter;
import mir.entity.adapter.EntityAdapterModel;
import mir.log.LoggerWrapper;
+import mir.util.JDBCStringRoutines;
import mir.util.ParameterExpander;
-public class EntityModifyingProducerNode implements ProducerNode {
+public class EntityModifyingProducerNode extends AbstractProducerNode {
private String entityExpression;
private String definition;
private Map fields;
Object value = ParameterExpander.evaluateExpression(aValueMap, valueExpression);
if (value instanceof String)
- entity.setValueForProperty(entityField, (String) value);
+ entity.setFieldValue(entityField, (String) value);
else if (value instanceof EntityAdapter)
- entity.setValueForProperty(entityField, ((EntityAdapter) value).getEntity().getId());
+ entity.setFieldValue(entityField, ((EntityAdapter) value).getEntity().getId());
+ else if (value instanceof Date) {
+ entity.setFieldValue(entityField, JDBCStringRoutines.formatDate((Date) value));
+ }
else
- aLogger.warn("Can't set value " + value.toString() + " for field " + entityField);
+ aLogger.warn("Can't set value " + value + " for field " + entityField);
}
- entity.update();
+
+ if (create)
+ entity.insert();
+ else
+ entity.update();
}
else
throw new ProducerExc( entityExpression + " does not evaluate to an entity");
}
catch (Throwable t) {
- aLogger.error("Error while performing entity modification operation: " + t.getMessage());
+ aLogger.error("Error while performing entity modification operation: " + t.getMessage(), t);
throw new ProducerFailure(t.getMessage(), t);
}