package sk.stuba.fiit.perconik.activity.serializers.resource;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourceAttributes;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import sk.stuba.fiit.perconik.eclipse.core.resources.ResourceType;
import static sk.stuba.fiit.perconik.data.content.StructuredContents.key;
public final class ResourceSerializer extends AbstractResourceSerializer<IResource> {
public ResourceSerializer(final Option ... options) {
super(options);
}
public ResourceSerializer(final Iterable<Option> options) {
super(options);
}
static void putResource(final StructuredContent content, final IResource resource, final Iterable<Option> options) {
content.put(key("type"), ResourceType.valueOf(resource.getType()).toString().toLowerCase());
content.put(key("name"), resource.getName());
PathSerializer serializer = new PathSerializer(options);
content.put(key("path", "local"), serializer.serialize(resource.getLocation()));
content.put(key("path", "project"), serializer.serialize(resource.getProjectRelativePath()));
content.put(key("path", "workspace"), serializer.serialize(resource.getFullPath()));
content.put(key("uri"), resource.getLocationURI());
content.put(key("raw", "path", "local"), serializer.serialize(resource.getRawLocation()));
content.put(key("raw", "uri"), resource.getRawLocationURI());
content.put(key("timestamp", "local"), resource.getLocalTimeStamp());
content.put(key("timestamp", "modification"), resource.getModificationStamp());
content.put(key("exists"), resource.exists());
content.put(key("isAccessible"), resource.isAccessible());
content.put(key("isDerived"), resource.isDerived());
content.put(key("isLinked"), resource.isLinked());
content.put(key("isPhantom"), resource.isPhantom());
content.put(key("isVirtual"), resource.isVirtual());
ResourceAttributes attributes = resource.getResourceAttributes();
if (attributes != null) {
content.put(key("isArchive"), attributes.isArchive());
content.put(key("isExecutable"), attributes.isExecutable());
content.put(key("isHidden"), attributes.isHidden());
content.put(key("isReadOnly"), attributes.isReadOnly());
content.put(key("isSymbolicLink"), attributes.isSymbolicLink());
}
}
}