package sk.stuba.fiit.perconik.activity.serializers.command;
import java.util.Set;
import org.eclipse.core.commands.IParameter;
import org.eclipse.core.commands.ITypedParameter;
import org.eclipse.core.commands.ParameterType;
import org.eclipse.core.commands.ParameterValuesException;
import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity;
import static sk.stuba.fiit.perconik.data.content.StructuredContents.key;
public final class ParameterSerializer extends AbstractConfigurableMultiSerializer<IParameter> {
public ParameterSerializer(final Option ... options) {
super(options);
}
public ParameterSerializer(final Iterable<Option> options) {
super(options);
}
static void putParameter(final StructuredContent content, final IParameter parameter, final Set<Option> options) {
content.put(key("identifier"), parameter.getId());
content.put(key("name"), parameter.getName());
if (parameter instanceof ITypedParameter) {
ParameterType type = ((ITypedParameter) parameter).getParameterType();
content.put(key("type"), new ParameterTypeSerializer(options).serialize(type));
}
try {
content.put(key("values"), parameter.getValues().getParameterValues());
} catch (ParameterValuesException ignoree) {}
content.put(key("isOptional"), parameter.isOptional());
}
@Override
protected void put(final StructuredContent content, final IParameter parameter) {
putObjectIdentity(content, parameter);
putParameter(content, parameter, this.options);
}
}