]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.commands.internal.serialization;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.WriteGraph;\r
5 import org.simantics.db.common.CommandMetadata;\r
6 import org.simantics.db.exception.DatabaseException;\r
7 import org.simantics.scl.runtime.function.Function2;\r
8 \r
9 public class CommandSerializerImpl implements CommandSerializer {\r
10 \r
11     String name;\r
12     Function2<Resource,Object,String>[] stringConverters;\r
13     \r
14     CommandSerializerImpl(String name,\r
15             Function2<Resource, Object, String>[] stringConverters) {\r
16         this.name = name;\r
17         this.stringConverters = stringConverters;\r
18     }\r
19 \r
20     public void serialize(WriteGraph graph, Resource context, Object[] parameters) throws DatabaseException {\r
21         if(parameters.length != stringConverters.length)\r
22             throw new IllegalArgumentException("Wrong number of parameters " + parameters.length + \r
23                     " given. Expected " + stringConverters.length + " parameters.");\r
24         StringBuilder b = new StringBuilder();\r
25         b.append(name);\r
26         for(int i=0;i<parameters.length;++i)\r
27             b.append(' ').append(stringConverters[i].apply(context, parameters[i]));\r
28         CommandMetadata.add(graph, context.getResourceId(), b.toString());\r
29     }\r
30     \r
31 }\r