1 package org.simantics.graph.compiler.internal.procedures;
\r
3 import gnu.trove.list.array.TIntArrayList;
\r
4 import gnu.trove.map.hash.TIntIntHashMap;
\r
6 import org.simantics.graph.query.Paths;
\r
7 import org.simantics.graph.store.GraphStore;
\r
8 import org.simantics.graph.store.IdentityStore;
\r
10 public class MergeEqualResources implements Runnable {
\r
15 public MergeEqualResources(Paths paths, GraphStore store) {
\r
22 IdentityStore identities = store.identities;
\r
23 if(identities.contains(paths.Equals)) {
\r
24 int equalsId = identities.pathToId(paths.Equals);
\r
25 identities.removeIdentity(equalsId);
\r
26 TIntArrayList rel = store.statements.extractRelation(equalsId);
\r
27 for(int i=0;i<rel.size();i+=2)
\r
28 identities.unify(rel.get(i), rel.get(i+1));
\r
31 TIntIntHashMap map = identities.extractUnifications();
\r
34 map = identities.extractUnifications();
\r
35 } while(!map.isEmpty());
\r