package org.simantics.interop.mapping.data; import java.util.ArrayList; import java.util.List; import org.simantics.db.Resource; public class ResourceSplitIdentifiable extends ResourceIdentifiable { private static int counter = 0; //private Resource resource; private int identifier; private int index; ResourceSplitIdentifiable(Resource resource, int index, int identifier) { super(resource); this.index = index; this.identifier = identifier; } public static List createIdentifiables(ResourceIdentifiable identifiable, int count) { List result = new ArrayList(count); int identifier = counter++; for (int i = 0; i < count; i++) { result.add(new ResourceSplitIdentifiable(identifiable.getResource(), i, identifier)); } return result; } public static List createIdentifiables(Identifiable identifiable, int count) { Resource res = identifiable.getAdapter(Resource.class); if (res == null) return null; Resource resources[] = identifiable.getAdapter(Resource[].class); if (resources.length > 1) { return ResourceSetSplitIdentifiable.createIdentifiables(identifiable, count); } else { List result = new ArrayList(count); int identifier = counter++; for (int i = 0; i < count; i++) { result.add(new ResourceSplitIdentifiable(res, i, identifier)); } return result; } } @Override public boolean equals(Object arg0) { if (arg0 == null) return false; if (this.getClass() != arg0.getClass()) return false; ResourceSplitIdentifiable other = (ResourceSplitIdentifiable)arg0; if (identifier != other.identifier) return false; if (index != other.index) return false; return resource.equals(other.resource); } @Override public Identifiable merge(Identifiable other) { throw new RuntimeException("Cannot be merged"); } }