]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
UpdateComponentUids creates a map from old uids to new uids 43/243/2
authorHannu Niemistö <hannu.niemisto@semantum.fi>
Mon, 2 Jan 2017 13:48:49 +0000 (15:48 +0200)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Mon, 2 Jan 2017 13:46:03 +0000 (16:46 +0300)
The map can be used to migrate also some other structures containing
uids.
[PRIVATE-12930]

Change-Id: I9b621eb83a86dcf424b56010249e170cc4bc8741

bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/UpdateComponentUids.java

index d3233115254aecb5863bd31d2874241849e618a5..dad99c8cee76487334b8119c58cbdf8c9069b716 100644 (file)
@@ -6,12 +6,14 @@ import org.simantics.db.exception.CancelTransactionException;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.Variable;
 
+import gnu.trove.map.hash.THashMap;
+
 /**
  * Utility for updating UIDs in the given component to correspond
  * the RVIs of the given variable. This operation is needed when
  * the mapping is part of a model that is imported to a new database
  * and resource ids have been changed.
- * 
+ *
  * @author Hannu Niemist&ouml;
  * @author Tuukka Lehtonen
  */
@@ -21,10 +23,11 @@ public class UpdateComponentUids<T extends ComponentBase<T>> {
         void componentsDone(int components, int componentCount);
     }
 
+    private THashMap<String, String> oldToNewUids;
     private IProgressMonitor monitor;
     private ComponentUpdateProgressMonitor componentMonitor;
     private ReadGraph graph;
-       private int componentCount;
+    private int componentCount;
     private int counter;
 
     private UpdateComponentUids(IProgressMonitor monitor, ReadGraph graph, int componentCount) {
@@ -35,7 +38,9 @@ public class UpdateComponentUids<T extends ComponentBase<T>> {
     }
 
     private void update(T component, Variable variable) throws DatabaseException {
-        component.uid = variable.getRVI(graph).toString();
+        String newUid = variable.getRVI(graph).toString();
+        oldToNewUids.put(component.uid, newUid);
+        component.uid = newUid;
 
         // Handle progress monitoring and cancellation
         counter++;
@@ -54,12 +59,14 @@ public class UpdateComponentUids<T extends ComponentBase<T>> {
         }
     }
 
-    public static <T extends ComponentBase<T>> void update(ReadGraph graph, T component, Variable variable) throws DatabaseException {
-        update(null, graph, component, variable);
+    public static <T extends ComponentBase<T>> THashMap<String, String> update(ReadGraph graph, T component, Variable variable) throws DatabaseException {
+        return update(null, graph, component, variable);
     }
 
-    public static <T extends ComponentBase<T>> void update(IProgressMonitor monitor, ReadGraph graph, T component, Variable variable) throws DatabaseException {
-        new UpdateComponentUids<T>(monitor, graph, countComponents(component)).update(component, variable);
+    public static <T extends ComponentBase<T>> THashMap<String, String> update(IProgressMonitor monitor, ReadGraph graph, T component, Variable variable) throws DatabaseException {
+        UpdateComponentUids<T> updateComponentUids = new UpdateComponentUids<T>(monitor, graph, countComponents(component));
+        updateComponentUids.update(component, variable);
+        return updateComponentUids.oldToNewUids;
     }
 
     public static <T extends ComponentBase<T>> int countComponents(T component) {