]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/internal/serialization/CommandSerializerImpl.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.commands / src / org / simantics / scl / commands / internal / serialization / CommandSerializerImpl.java
diff --git a/bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/internal/serialization/CommandSerializerImpl.java b/bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/internal/serialization/CommandSerializerImpl.java
new file mode 100644 (file)
index 0000000..85b8967
--- /dev/null
@@ -0,0 +1,31 @@
+package org.simantics.scl.commands.internal.serialization;\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.CommandMetadata;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.scl.runtime.function.Function2;\r
+\r
+public class CommandSerializerImpl implements CommandSerializer {\r
+\r
+    String name;\r
+    Function2<Resource,Object,String>[] stringConverters;\r
+    \r
+    CommandSerializerImpl(String name,\r
+            Function2<Resource, Object, String>[] stringConverters) {\r
+        this.name = name;\r
+        this.stringConverters = stringConverters;\r
+    }\r
+\r
+    public void serialize(WriteGraph graph, Resource context, Object[] parameters) throws DatabaseException {\r
+        if(parameters.length != stringConverters.length)\r
+            throw new IllegalArgumentException("Wrong number of parameters " + parameters.length + \r
+                    " given. Expected " + stringConverters.length + " parameters.");\r
+        StringBuilder b = new StringBuilder();\r
+        b.append(name);\r
+        for(int i=0;i<parameters.length;++i)\r
+            b.append(' ').append(stringConverters[i].apply(context, parameters[i]));\r
+        CommandMetadata.add(graph, context.getResourceId(), b.toString());\r
+    }\r
+    \r
+}\r