--- /dev/null
+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