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