package sk.stuba.fiit.perconik.activity.serializers.debug;
import java.util.Set;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer;
import sk.stuba.fiit.perconik.activity.serializers.resource.FileSerializer;
import sk.stuba.fiit.perconik.activity.serializers.resource.ProjectSerializer;
import sk.stuba.fiit.perconik.activity.serializers.resource.ResourceSerializer;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import sk.stuba.fiit.perconik.eclipse.core.resources.Projects;
import static java.util.Arrays.asList;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity;
import static sk.stuba.fiit.perconik.data.content.StructuredContents.key;
public final class LaunchConfigurationSerializer extends AbstractConfigurableMultiSerializer<ILaunchConfiguration> {
public LaunchConfigurationSerializer(final Option ... options) {
super(options);
}
public LaunchConfigurationSerializer(final Iterable<Option> options) {
super(options);
}
static void putLaunchConfiguration(final StructuredContent content, final ILaunchConfiguration configuration, final Set<Option> options) {
content.put(key("name"), configuration.getName());
content.put(key("file"), new FileSerializer(options).serialize(configuration.getFile()));
try {
content.put(key("type"), configuration.getType());
} catch (CoreException ignore) {}
try {
content.put(key("category"), configuration.getCategory());
} catch (CoreException ignore) {}
try {
content.put(key("modes"), configuration.getModes());
} catch (CoreException ignore) {}
content.put(key("projects"), new ProjectSerializer(options).serialize(Projects.fromLaunchConfiguration(configuration)));
try {
IResource[] resources = configuration.getMappedResources();
if (resources != null) {
content.put(key("mappedResources"), new ResourceSerializer(options).serialize(asList(resources)));
}
} catch (CoreException ignore) {}
content.put(key("exists"), configuration.exists());
content.put(key("isLocal"), configuration.isLocal());
content.put(key("isReadOnly"), configuration.isReadOnly());
content.put(key("isWorkingCopy"), configuration.isWorkingCopy());
}
@Override
protected void put(final StructuredContent content, final ILaunchConfiguration configuration) {
putObjectIdentity(content, configuration);
putLaunchConfiguration(content, configuration, this.options);
}
}