fix of human readable size and media info
[mir.git] / source / mir / producer / EntityModifyingProducerNode.java
index ecbf595..87a7d66 100755 (executable)
@@ -30,6 +30,7 @@
 
 package mir.producer;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -38,10 +39,11 @@ import mir.entity.Entity;
 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;
@@ -84,19 +86,26 @@ public class EntityModifyingProducerNode implements ProducerNode {
           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);
     }