1 package org.simantics.scl.commands.internal.serialization;
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;
9 public class CommandSerializerImpl implements CommandSerializer {
12 Function2<Resource,Object,String>[] stringConverters;
14 CommandSerializerImpl(String name,
15 Function2<Resource, Object, String>[] stringConverters) {
17 this.stringConverters = stringConverters;
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();
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());