1 package org.simantics.interop.mapping.data;
\r
4 import java.util.ArrayList;
\r
5 import java.util.Collection;
\r
7 import org.simantics.db.Resource;
\r
9 public class ResourceSetSplitIdentifiable2 extends ResourceSetIdentifiable {
\r
11 private String identifier;
\r
14 public ResourceSetSplitIdentifiable2(Resource resource, String identifier) {
\r
16 this.identifier =identifier;
\r
19 public ResourceSetSplitIdentifiable2(String identifier, Resource primary, Resource... resource) {
\r
20 super(primary,resource);
\r
21 this.identifier = identifier;
\r
24 public ResourceSetSplitIdentifiable2(Resource primary, Collection<Resource> resources, String identifier) {
\r
25 super(primary,resources);
\r
26 this.identifier = identifier;
\r
29 public static Identifiable createIdentifiable(ResourceSetIdentifiable identifiable, String identifier) {
\r
30 return new ResourceSetSplitIdentifiable2(identifiable.getPrimary(),identifiable.getResources(), identifier);
\r
33 public static Identifiable createIdentifiable(Identifiable identifiable, String identifier) {
\r
34 Resource res = identifiable.getAdapter(Resource.class);
\r
38 Resource resources[] = identifiable.getAdapter(Resource[].class);
\r
39 if (resources.length > 1) {
\r
40 return new ResourceSetSplitIdentifiable2(identifier, res, resources);
\r
43 return ResourceSplitIdentifiable2.createIdentifiable(identifiable, identifier);
\r
49 public String getIdentifier() {
\r
54 public boolean equals(Object arg0) {
\r
57 if (this.getClass() != arg0.getClass())
\r
59 ResourceSetSplitIdentifiable2 other = (ResourceSetSplitIdentifiable2)arg0;
\r
60 if (!identifier.equals(other.identifier))
\r
62 return super.equals(arg0);
\r
66 public Identifiable merge(Identifiable other) {
\r
67 if (other instanceof ResourceSplitIdentifiable2) {
\r
68 ResourceSplitIdentifiable2 o = (ResourceSplitIdentifiable2)other;
\r
69 if (!o.getIdentifier().equals(identifier))
\r
70 throw new RuntimeException("Cannot be merged, Identifiers do not match " + identifier + " " + o.getIdentifier());
\r
71 Collection<Resource> resources = new ArrayList<Resource>();
\r
72 resources.addAll(getResources());
\r
73 resources.add(o.getResource());
\r
74 ResourceSetSplitIdentifiable2 id = new ResourceSetSplitIdentifiable2(getPrimary(), resources,identifier);
\r
77 if (other instanceof ResourceSetSplitIdentifiable2) {
\r
78 ResourceSetSplitIdentifiable2 o = (ResourceSetSplitIdentifiable2)other;
\r
79 if (!o.getIdentifier().equals(identifier))
\r
80 throw new RuntimeException("Cannot be merged, Identifiers do not match " + identifier + " " + o.getIdentifier());
\r
81 Collection<Resource> resources = new ArrayList<Resource>();
\r
82 resources.addAll(getResources());
\r
83 resources.addAll(o.getResources());
\r
84 ResourceSetSplitIdentifiable2 id = new ResourceSetSplitIdentifiable2(getPrimary(), resources,identifier);
\r
87 throw new RuntimeException("Cannot be merged");
\r