package org.simantics.interop.mapping.data; import java.util.ArrayList; import java.util.Collection; import org.simantics.db.Resource; public class ResourceIdentifiable implements Identifiable { protected Resource resource; public ResourceIdentifiable(Resource resource) { this.resource = resource; } public Resource getResource() { return resource; } @Override public int hashCode() { return resource.hashCode(); } @SuppressWarnings("unchecked") public T getAdapter(Class clazz) { if (clazz.equals(Resource.class)) return (T)resource; if (clazz.equals(Resource[].class)) return (T) new Resource[]{resource}; if (clazz.equals(String.class)) { // TODO : have to use org.simantics.db.common.utils.Transaction to get access to ReadGraph. return (T)resource.toString();//NameUtils.getSafeName(g,resource); } return null; } @Override public boolean equals(Object arg0) { if (arg0 == null) return false; if (this.getClass() != arg0.getClass()) return false; ResourceIdentifiable other = (ResourceIdentifiable)arg0; return resource.equals(other.resource); } @Override public Identifiable merge(Identifiable other) { if (other instanceof ResourceIdentifiable) { ResourceSetIdentifiable i = new ResourceSetIdentifiable(this.resource,((ResourceIdentifiable)other).resource); return i; } else if (other instanceof ResourceSetIdentifiable) { Collection coll = new ArrayList(); coll.add(this.resource); coll.addAll(((ResourceSetIdentifiable)other).getResources()); ResourceSetIdentifiable i = new ResourceSetIdentifiable(resource,coll); return i; } return null; } @Override public String toString() { return resource.toString(); } }