]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Merge "Added Automatic-module-name to all bundles for Java 9 JPMS compatibility"
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Mon, 29 Oct 2018 11:14:28 +0000 (11:14 +0000)
committerGerrit Code Review <gerrit2@simantics>
Mon, 29 Oct 2018 11:14:28 +0000 (11:14 +0000)
52 files changed:
bundles/org.simantics.browsing.ui.common/META-INF/MANIFEST.MF
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/ExplorerStates.java [new file with mode: 0644]
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/GraphExplorerStateBean.java [moved from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerStateBean.java with 95% similarity]
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/GraphExplorerStateNodeBean.java [moved from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerStateNodeBean.java with 94% similarity]
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/IdentifiedStatePersistor.java [moved from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/IdentifiedStatePersistor.java with 89% similarity]
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/StringArrayBean.java [moved from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/StringArrayBean.java with 94% similarity]
bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/StringBean.java [moved from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/StringBean.java with 94% similarity]
bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/NatTableGraphExplorer.java
bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerImpl.java
bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerImpl2.java
bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/widgets/GraphExplorerComposite.java
bundles/org.simantics.document.server/src/org/simantics/document/server/state/StateNodeManager.java
bundles/org.simantics.document.server/src/org/simantics/document/server/state/StateSessionManager.java
bundles/org.simantics.jdbc/src/org/simantics/jdbc/variable/JDBCSessionManager.java
bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ComponentTypeViewerData.java
bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ComponentTypeViewerPropertyInfo.java
bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ConfigurationPropertiesSection.java
bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/DerivedPropertiesSection.java
bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/function/StandardPersistor.java
bundles/org.simantics.modeling/src/org/simantics/modeling/userComponent/ComponentTypeCommands.java
bundles/org.simantics.simulator.toolkit.db/META-INF/MANIFEST.MF
bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardSessionManager.java
bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableManagerVariableBuilder.java [new file with mode: 0644]
bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableNodeManager.java [new file with mode: 0644]
bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableRealm.java [new file with mode: 0644]
bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableSessionManager.java [new file with mode: 0644]
bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardNodeManager.java
bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/StandardRealm.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetMapping.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetReferenceResolver.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetSessionManager.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineCommandBuilder.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineUpdater.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LinesCommandBuilder.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/NullCommandBuilder.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/SheetLineComponent.java
bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/StyleUpdater.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/CommandBuilder.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ConnectionUpdateRule.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/PropertyUpdateRule.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java
bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/UpdateComponentUids.java
bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/utils/ComponentBase.java [moved from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ComponentBase.java with 98% similarity]
bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/utils/ComponentFactory.java [moved from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ComponentFactory.java with 62% similarity]
bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/utils/MappingBase.java [moved from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/MappingBase.java with 99% similarity]
bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/utils/Solver.java [moved from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/Solver.java with 85% similarity]
bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/utils/StateUndoContextBase.java [moved from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/StateUndoContextBase.java with 83% similarity]

index aa73ac66481940325fc9e35449471e885daaaa93..0b734538c68fa8941fb4de275385eabacceb9adf 100644 (file)
@@ -24,6 +24,7 @@ Export-Package: org.simantics.browsing.ui.common,
  org.simantics.browsing.ui.common.node,
  org.simantics.browsing.ui.common.processors,
  org.simantics.browsing.ui.common.property,
+ org.simantics.browsing.ui.common.state,
  org.simantics.browsing.ui.common.viewpoints,
  org.simantics.browsing.ui.common.views
 Bundle-Vendor: VTT Technical Research Center of Finland
diff --git a/bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/ExplorerStates.java b/bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/ExplorerStates.java
new file mode 100644 (file)
index 0000000..380968b
--- /dev/null
@@ -0,0 +1,60 @@
+package org.simantics.browsing.ui.common.state;
+
+import java.io.File;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.simantics.DatabaseJob;
+import org.simantics.browsing.ui.ExplorerState;
+import org.simantics.browsing.ui.NodeContext;
+import org.simantics.browsing.ui.StatePersistor;
+import org.simantics.browsing.ui.common.Activator;
+
+/**
+ * @author Tuukka Lehtonen
+ * @since 1.36.0
+ */
+public class ExplorerStates {
+
+    public static File explorerStateLocation() {
+        return Platform.getStateLocation(Activator.getDefault().getBundle()).toFile();
+    }
+
+    public static CompletableFuture<ExplorerState> scheduleRead(NodeContext root, StatePersistor persistor) {
+        CompletableFuture<ExplorerState> result = new CompletableFuture<>();
+        new ReaderJob(root, persistor, result).schedule();
+        return result;
+    }
+
+    private static class ReaderJob extends DatabaseJob {
+
+        private NodeContext root;
+        private StatePersistor persistor;
+        private CompletableFuture<ExplorerState> consumer;
+
+        public ReaderJob(NodeContext root, StatePersistor persistor, CompletableFuture<ExplorerState> consumer) {
+            super("Reading previous graph explorer state");
+            this.root = root;
+            this.persistor = persistor;
+            this.consumer = consumer;
+        }
+
+        @Override
+        protected IStatus run(IProgressMonitor monitor) {
+            try {
+                monitor.beginTask("Loading persisted data", 1);
+                ExplorerState state = persistor.deserialize(explorerStateLocation(), root);
+                monitor.worked(1);
+                consumer.complete(state);
+                return Status.OK_STATUS;
+            } finally {
+                monitor.done();
+            }
+        }
+
+    }
+
+}
similarity index 95%
rename from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerStateBean.java
rename to bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/GraphExplorerStateBean.java
index c9bf211dd9028f94c63b6a316567a60dff8a83c2..7b4d7877e6d608d6953737c16ee0ac82f6fe578c 100644 (file)
@@ -9,7 +9,7 @@
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
  *******************************************************************************/
-package org.simantics.browsing.ui.swt;
+package org.simantics.browsing.ui.common.state;
 
 import java.util.Map;
 
similarity index 94%
rename from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerStateNodeBean.java
rename to bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/GraphExplorerStateNodeBean.java
index 49831e28c0b44ae0288fbfd807e73a5725abc126..67c5c9d7a54a0833bea422443b191759825c356d 100644 (file)
@@ -9,7 +9,7 @@
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
  *******************************************************************************/
-package org.simantics.browsing.ui.swt;
+package org.simantics.browsing.ui.common.state;
 
 import java.util.TreeMap;
 
similarity index 89%
rename from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/IdentifiedStatePersistor.java
rename to bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/IdentifiedStatePersistor.java
index 5a3bb75b225af675b90ca05a2bbb021343ba8965..0a417bd389c32ca8b2368888c3fb3ebef06fe2dc 100644 (file)
@@ -1,4 +1,4 @@
-package org.simantics.browsing.ui.swt;
+package org.simantics.browsing.ui.common.state;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -11,13 +11,16 @@ import org.simantics.browsing.ui.ExplorerState;
 import org.simantics.browsing.ui.NodeContext;
 import org.simantics.browsing.ui.StatePersistor;
 import org.simantics.databoard.util.StringUtil;
-import org.simantics.db.common.utils.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @author Tuukka Lehtonen
  */
 public class IdentifiedStatePersistor implements StatePersistor {
 
+       private static final Logger LOGGER = LoggerFactory.getLogger(IdentifiedStatePersistor.class);
+
        protected final String id;
 
        public IdentifiedStatePersistor(String id) {
@@ -40,7 +43,7 @@ public class IdentifiedStatePersistor implements StatePersistor {
                        if (bean != null && memento != null)
                                Files.write(memento, bean.serialize());
                } catch (Throwable t) {
-                       Logger.defaultLogError(t);
+                       LOGGER.error("Failed to serialize ExplorerState " + state, t);
                }
        }
 
@@ -52,7 +55,7 @@ public class IdentifiedStatePersistor implements StatePersistor {
                        stateBean.deserialize( Files.readAllBytes(path) );
                        return toState(stateBean);
                } catch (Throwable t) {
-                       Logger.defaultLogError(t);
+                       LOGGER.error("Failed to deserialize ExplorerState from " + path, t);
                        return ExplorerState.EMPTY;
                }
        }
similarity index 94%
rename from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/StringArrayBean.java
rename to bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/StringArrayBean.java
index 219db8364e5c322d27e9775d662a4358f36ffb54..90ff79a142929d52c9017deeb9d523b9b14ea887 100644 (file)
@@ -9,7 +9,7 @@
  * Contributors:
  *     Semantum Oy - initial API and implementation
  *******************************************************************************/
-package org.simantics.browsing.ui.swt;
+package org.simantics.browsing.ui.common.state;
 
 import org.simantics.databoard.annotations.Optional;
 import org.simantics.databoard.util.Bean;
similarity index 94%
rename from bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/StringBean.java
rename to bundles/org.simantics.browsing.ui.common/src/org/simantics/browsing/ui/common/state/StringBean.java
index c584da059eb55970d0168e0518296acc6ba21425..c2b435648fe17051f72c34ed89fca950178cb6ec 100644 (file)
@@ -9,7 +9,7 @@
  * Contributors:
  *     Semantum Oy - initial API and implementation
  *******************************************************************************/
-package org.simantics.browsing.ui.swt;
+package org.simantics.browsing.ui.common.state;
 
 import org.simantics.databoard.annotations.Optional;
 import org.simantics.databoard.util.Bean;
index be6a73a0c05dbff44a460e4b5de85bd9000947fb..37eafd4eb5e965e1e1811fc418576e8a37535b21 100644 (file)
@@ -26,7 +26,6 @@ import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.resource.ColorDescriptor;
@@ -172,6 +171,7 @@ import org.simantics.browsing.ui.common.processors.DefaultViewpointProcessor;
 import org.simantics.browsing.ui.common.processors.IsExpandedProcessor;
 import org.simantics.browsing.ui.common.processors.NoSelectionRequestProcessor;
 import org.simantics.browsing.ui.common.processors.ProcessorLifecycle;
+import org.simantics.browsing.ui.common.state.ExplorerStates;
 import org.simantics.browsing.ui.content.Labeler;
 import org.simantics.browsing.ui.content.Labeler.CustomModifier;
 import org.simantics.browsing.ui.content.Labeler.DialogModifier;
@@ -198,6 +198,7 @@ import org.simantics.utils.threads.SWTThread;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.AdaptionUtils;
 import org.simantics.utils.ui.ISelectionUtils;
+import org.simantics.utils.ui.SWTUtils;
 import org.simantics.utils.ui.jface.BasePostSelectionProvider;
 
 import gnu.trove.map.hash.THashMap;
@@ -580,17 +581,16 @@ public class NatTableGraphExplorer extends GraphExplorerImplBase implements Grap
     private void initializeState() {
         if (persistor == null)
             return;
+        ExplorerStates.scheduleRead(getRoot(), persistor)
+        .thenAccept(state -> SWTUtils.asyncExec(natTable, () -> restoreState(state)));
+    }
 
-        ExplorerState state = persistor.deserialize(
-                Platform.getStateLocation(Activator.getDefault().getBundle()).toFile(),
-                getRoot());
-
-
+    private void restoreState(ExplorerState state) {
         Object processor = getPrimitiveProcessor(BuiltinKeys.IS_EXPANDED);
         if (processor instanceof DefaultIsExpandedProcessor) {
             DefaultIsExpandedProcessor isExpandedProcessor = (DefaultIsExpandedProcessor)processor;
             for(NodeContext expanded : state.expandedNodes) {
-                isExpandedProcessor.setExpanded(expanded, true);
+                isExpandedProcessor.replaceExpanded(expanded, true);
             }
         }
     }
index 3cf5f7478cd7af3dc23ff412db75eac0628f87c1..df736c1e6dc2603315bea23f47b46a2170a52f55 100644 (file)
@@ -39,7 +39,6 @@ import org.eclipse.core.runtime.AssertionFailedException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.IStatusLineManager;
@@ -145,6 +144,7 @@ import org.simantics.browsing.ui.common.processors.DefaultViewpointProcessor;
 import org.simantics.browsing.ui.common.processors.IsExpandedProcessor;
 import org.simantics.browsing.ui.common.processors.NoSelectionRequestProcessor;
 import org.simantics.browsing.ui.common.processors.ProcessorLifecycle;
+import org.simantics.browsing.ui.common.state.ExplorerStates;
 import org.simantics.browsing.ui.content.ImageDecorator;
 import org.simantics.browsing.ui.content.Imager;
 import org.simantics.browsing.ui.content.LabelDecorator;
@@ -169,6 +169,7 @@ import org.simantics.utils.threads.IThreadWorkQueue;
 import org.simantics.utils.threads.SWTThread;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.ISelectionUtils;
+import org.simantics.utils.ui.SWTUtils;
 import org.simantics.utils.ui.jface.BasePostSelectionProvider;
 import org.simantics.utils.ui.widgets.VetoingEventHandler;
 import org.simantics.utils.ui.workbench.WorkbenchUtils;
@@ -1883,15 +1884,15 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
             });
         }
     }
-    
+
     private void initializeState() {
         if (persistor == null)
             return;
+        ExplorerStates.scheduleRead(getRoot(), persistor)
+        .thenAccept(state -> SWTUtils.asyncExec(tree, () -> restoreState(state)));
+    }
 
-        ExplorerState state = persistor.deserialize(
-                Platform.getStateLocation(Activator.getDefault().getBundle()).toFile(),
-                getRoot());
-
+    private void restoreState(ExplorerState state) {
         // topNodeToSet will be processed by #setData when it encounters a
         // NodeContext that matches this one.
 //        topNodePath = state.topNodePath;
@@ -1902,7 +1903,7 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
         if (processor instanceof DefaultIsExpandedProcessor) {
             DefaultIsExpandedProcessor isExpandedProcessor = (DefaultIsExpandedProcessor)processor;
             for(NodeContext expanded : state.expandedNodes) {
-                isExpandedProcessor.setExpanded(expanded, true);
+                isExpandedProcessor.replaceExpanded(expanded, true);
             }
         }
     }
@@ -1947,7 +1948,7 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
         }
                    
         persistor.serialize(
-                Platform.getStateLocation(Activator.getDefault().getBundle()).toFile(),
+                ExplorerStates.explorerStateLocation(),
                 getRoot(),
                 new ExplorerState(topNodePath, topNodePathChildIndex, expandedNodes, columnWidths));
     }
@@ -3251,13 +3252,16 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
      */
     private void doSetColumns(Column[] cols, Consumer<Map<Column, Object>> callback) {
         // Attempt to keep previous column widths.
-        Map<String, Integer> prevWidths = new HashMap<String, Integer>();
+        Map<String, Integer> prevWidths = new HashMap<>();
         for (TreeColumn column : tree.getColumns()) {
-            prevWidths.put(column.getText(), column.getWidth());
-            column.dispose();
+            Column c = (Column) column.getData();
+            if (c != null) {
+                prevWidths.put(c.getKey(), column.getWidth());
+                column.dispose();
+            }
         }
 
-        HashMap<String, Integer> keyToIndex = new HashMap<String, Integer>();
+        HashMap<String, Integer> keyToIndex = new HashMap<>();
         for (int i = 0; i < cols.length; ++i) {
             keyToIndex.put(cols[i].getKey(), i);
         }
@@ -3268,7 +3272,7 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
         this.columnImageArray = new Image[cols.length];
         this.columnDescOrImageArray = new Object[cols.length];
 
-        Map<Column, Object> map = new HashMap<Column, Object>();
+        Map<Column, Object> map = new HashMap<>();
 
         tree.setHeaderVisible(columnsAreVisible);
         for (Column column : columns) {
@@ -3281,7 +3285,7 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
             int cw = column.getWidth();
 
             // Try to keep previous widths
-            Integer w = prevWidths.get(column);
+            Integer w = prevWidths.get(column.getKey());
             if (w != null)
                 c.setWidth(w);
             else if (cw != Column.DEFAULT_CONTROL_WIDTH)
@@ -3306,13 +3310,9 @@ class GraphExplorerImpl extends GraphExplorerImplBase implements Listener, Graph
         if(callback != null) callback.accept(map);
 
         // Make sure the explorer fits the columns properly after initialization.
-        tree.getDisplay().asyncExec(new Runnable() {
-            @Override
-            public void run() {
-                if (tree.isDisposed())
-                    return;
+        SWTUtils.asyncExec(tree, () -> {
+            if (!tree.isDisposed())
                 refreshColumnSizes();
-            }
         });
     }
 
index af0fa25a355019468aecd5a89f6a6f950e69833e..c21158e31a65785d8a9dd5d7df728871af63a785 100644 (file)
@@ -38,7 +38,6 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.layout.GridDataFactory;
@@ -154,6 +153,7 @@ import org.simantics.browsing.ui.common.processors.DefaultViewpointProcessor;
 import org.simantics.browsing.ui.common.processors.IsExpandedProcessor;
 import org.simantics.browsing.ui.common.processors.NoSelectionRequestProcessor;
 import org.simantics.browsing.ui.common.processors.ProcessorLifecycle;
+import org.simantics.browsing.ui.common.state.ExplorerStates;
 import org.simantics.browsing.ui.content.ImageDecorator;
 import org.simantics.browsing.ui.content.Imager;
 import org.simantics.browsing.ui.content.LabelDecorator;
@@ -174,6 +174,7 @@ import org.simantics.utils.threads.SWTThread;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.AdaptionUtils;
 import org.simantics.utils.ui.ISelectionUtils;
+import org.simantics.utils.ui.SWTUtils;
 import org.simantics.utils.ui.jface.BasePostSelectionProvider;
 
 import gnu.trove.map.hash.THashMap;
@@ -574,17 +575,16 @@ public class GraphExplorerImpl2 extends GraphExplorerImplBase implements GraphEx
     private void initializeState() {
         if (persistor == null)
             return;
+        ExplorerStates.scheduleRead(getRoot(), persistor)
+        .thenAccept(state -> SWTUtils.asyncExec(viewer.getTree(), () -> restoreState(state)));
+    }
 
-        ExplorerState state = persistor.deserialize(
-                Platform.getStateLocation(Activator.getDefault().getBundle()).toFile(),
-                getRoot());
-
-
+    private void restoreState(ExplorerState state) {
         Object processor = getPrimitiveProcessor(BuiltinKeys.IS_EXPANDED);
         if (processor instanceof DefaultIsExpandedProcessor) {
             DefaultIsExpandedProcessor isExpandedProcessor = (DefaultIsExpandedProcessor)processor;
             for(NodeContext expanded : state.expandedNodes) {
-                isExpandedProcessor.setExpanded(expanded, true);
+                isExpandedProcessor.replaceExpanded(expanded, true);
             }
         }
     }
@@ -717,13 +717,14 @@ public class GraphExplorerImpl2 extends GraphExplorerImplBase implements GraphEx
     
     private void doSetColumns(Column[] cols, Consumer<Map<Column, Object>> callback) {
         // Attempt to keep previous column widths.
-        Map<String, Integer> prevWidths = new HashMap<String, Integer>();
-        
+        Map<String, Integer> prevWidths = new HashMap<>();
         for (TreeViewerColumn c : treeViewerColumns) {
-               prevWidths.put(c.getColumn().getText(), c.getColumn().getWidth());
-               c.getColumn().dispose();
+            Column col = (Column) (c.getColumn().getData());
+            if (col != null)
+                prevWidths.put(col.getKey(), c.getColumn().getWidth());
+            c.getColumn().dispose();
         }
-       
+
         treeViewerColumns.clear();
         
         HashMap<String, Integer> keyToIndex = new HashMap<String, Integer>();
@@ -765,7 +766,7 @@ public class GraphExplorerImpl2 extends GraphExplorerImplBase implements GraphEx
             int cw = column.getWidth();
 
             // Try to keep previous widths
-            Integer w = prevWidths.get(column);
+            Integer w = prevWidths.get(column.getKey());
             if (w != null)
                 c.setWidth(w);
             else if (cw != Column.DEFAULT_CONTROL_WIDTH)
@@ -2487,11 +2488,11 @@ public class GraphExplorerImpl2 extends GraphExplorerImplBase implements GraphEx
                        return context == null;
                }
                
-               @SuppressWarnings("rawtypes")
+               @SuppressWarnings("unchecked")
                @Override
-               public Object getAdapter(Class adapter) {
+               public <T> T getAdapter(Class<T> adapter) {
                        if (adapter == NodeContext.class)
-                               return context;
+                               return (T) context;
                        return context.getAdapter(adapter);
                }
                
@@ -2712,9 +2713,8 @@ public class GraphExplorerImpl2 extends GraphExplorerImplBase implements GraphEx
             * store the key, this is not used.
             */
            NodeContext getNC = new NodeContext() {
-               @SuppressWarnings("rawtypes")
-                       @Override
-               public Object getAdapter(Class adapter) {
+               @Override
+               public <T> T getAdapter(Class<T> adapter) {
                        return null;
                }
                
index 42ee2bdf812fe788e20b040139ac9ae9df4fdce6..2f52153a1192b45e2a6c33e42afd2da58a86e1a1 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2012 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2018 Association for Decentralized Information Management
  * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -17,10 +17,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.BiFunction;
-import java.util.function.Consumer;
 
 import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
@@ -45,7 +43,6 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
 import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchSite;
@@ -72,6 +69,7 @@ import org.simantics.browsing.ui.common.processors.LabelerFactoryResolver;
 import org.simantics.browsing.ui.common.processors.UserSelectedComparableFactoryQueryProcessor;
 import org.simantics.browsing.ui.common.processors.UserSelectedViewpointFactoryQueryProcessor;
 import org.simantics.browsing.ui.common.processors.ViewpointFactoryResolver;
+import org.simantics.browsing.ui.common.state.ExplorerStates;
 import org.simantics.browsing.ui.common.views.FilterAreaSource;
 import org.simantics.browsing.ui.common.views.IFilterArea;
 import org.simantics.browsing.ui.common.views.IFilterAreaProvider;
@@ -83,7 +81,6 @@ import org.simantics.browsing.ui.graph.impl.RelatedObjectsQueryProcessor;
 import org.simantics.browsing.ui.graph.impl.SessionContextInputSource;
 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;
 import org.simantics.browsing.ui.model.nodetypes.NodeType;
-import org.simantics.browsing.ui.swt.Activator;
 import org.simantics.browsing.ui.swt.ComparatorSelector;
 import org.simantics.browsing.ui.swt.ContextMenuInitializer;
 import org.simantics.browsing.ui.swt.DefaultExplorerSelectionListener;
@@ -135,6 +132,7 @@ import org.simantics.utils.datastructures.hints.IHintContext.Key;
 import org.simantics.utils.datastructures.hints.IHintListener;
 import org.simantics.utils.datastructures.hints.IHintObservable;
 import org.simantics.utils.datastructures.hints.IHintTracker;
+import org.simantics.utils.ui.SWTUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -1194,52 +1192,48 @@ public class GraphExplorerComposite extends Composite implements Widget, IAdapta
     }
 
     private int getColumnWidth(Column column, ExplorerState state) {
-       // Get saved width from the persistor if there is one.
+        // Get saved width from the persistor if there is one.
         if (state != null && state.columnWidths != null) {
-               Integer width = state.columnWidths.get(column.getLabel());
-               if (width != null)
-                       return width;
+            Integer width = state.columnWidths.get(column.getLabel());
+            if (width != null)
+                return width;
         }
         return column.getWidth();
     }
-    
-    public void setColumns(Column[] columns) {
-
-        explorer.setColumns(columns, new Consumer<Map<Column, Object>>() {
-
-            @Override
-            public void accept(Map<Column, Object> objects) {
-               ExplorerState state = null;
-               if (persistor != null) {
-                       state = persistor.deserialize(
-                               Platform.getStateLocation(Activator.getDefault().getBundle()).toFile(),
-                               explorer.getRoot());
-               }
-
-                for(Map.Entry<Column, Object> entry : objects.entrySet()) {
-                    Column column = entry.getKey();
-                    TreeColumn treeColumn = (TreeColumn)entry.getValue();
-
-                    if (column.getWidth() < 0) {
-                        throw new IllegalArgumentException("Column minimum width cannot be < 0, got " + column.getWidth());
-                    }
-
-                    int width = getColumnWidth(column, state);
-                    if(column.hasGrab()) {
-                       
-                        ad.setColumnData(treeColumn, new ColumnWeightData(column.getWeight(), width));
-
-                    } else {
-
-                        ad.setColumnData(treeColumn, new ColumnWeightData(0, width));
 
-                    }
-
-                }
-            }
+    protected void restoreColumnSizes(Map<Column, Object> columns) {
+        if (persistor != null) {
+            setColumnData(columns, null);
+            ExplorerStates.scheduleRead(explorer.getRoot(), persistor).thenAccept(state -> {
+                SWTUtils.asyncExec(GraphExplorerComposite.this, () -> {
+                    if (explorerComposite.isDisposed())
+                        setColumnData(columns, state);
+                });
+            });
+        } else {
+            setColumnData(columns, null);
+        }
+    }
 
+    protected void setColumnData(Map<Column, Object> columns, ExplorerState state) {
+        columns.forEach((column, widget) -> {
+            org.eclipse.swt.widgets.Widget columnWidget = (org.eclipse.swt.widgets.Widget) widget;
+            ad.setColumnData(columnWidget,
+                    new ColumnWeightData(
+                            column.hasGrab() ? column.getWeight() : 0,
+                            getColumnWidth(column, state)));
         });
+    }
 
+    public void setColumns(Column[] columns) {
+        // ColumnWeightData does not support column weight/width < 0
+        for (Column column : columns) {
+            if (column.getWeight() < 0)
+                throw new IllegalArgumentException("Column weight must be >= 0, got " + column.getWeight() + " for " + column);
+            if (column.getWidth() < 0)
+                throw new IllegalArgumentException("Column minimum width must be >= 0, got " + column.getWidth() + " for " + column);
+        }
+        explorer.setColumns(columns, this::restoreColumnSizes);
     }
 
     @Override
index 0b48e27220bbdf2fa130400b30857f2ad5ef2214..97bc4b1c732df93b6ce1671c8b6c6d0a9acb58a5 100644 (file)
@@ -1,9 +1,7 @@
 package org.simantics.document.server.state;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.Map;
-import java.util.Set;
 
 import org.simantics.databoard.Bindings;
 import org.simantics.databoard.binding.Binding;
@@ -11,38 +9,19 @@ import org.simantics.databoard.binding.error.BindingConstructionException;
 import org.simantics.databoard.binding.mutable.Variant;
 import org.simantics.databoard.serialization.RuntimeSerializerConstructionException;
 import org.simantics.databoard.serialization.SerializerConstructionException;
-import org.simantics.db.layer0.variable.NodeSupport;
-import org.simantics.simulator.toolkit.StandardNodeManager;
 import org.simantics.simulator.toolkit.StandardRealm;
+import org.simantics.simulator.toolkit.db.StandardVariableNodeManager;
 import org.simantics.simulator.variable.exceptions.NodeManagerException;
 import org.slf4j.LoggerFactory;
 
-public class StateNodeManager extends StandardNodeManager<StateNode, StateNodeManagerSupport> {
+public class StateNodeManager extends StandardVariableNodeManager<StateNode, StateNodeManagerSupport> {
 
        private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(StateNodeManager.class);
 
-       private NodeSupport<StateNode> support;
-
        public StateNodeManager(StandardRealm<StateNode, StateNodeManagerSupport> realm, StateNode root) {
                super(realm, root);
        }
 
-       public void registerSupport(NodeSupport<StateNode> support) {
-               this.support = support;
-       }
-
-       @Override
-       public Set<String> getClassifications(StateNode node) throws NodeManagerException {
-               return Collections.emptySet();
-       }
-
-       @Override
-       public void refreshVariable(StateNode node) {
-               super.refreshVariable(node);
-               support.valueCache.clearExpired();
-               support.structureCache.clearExpired();
-       }
-
        public void setState(String key, Object value) {
                try {
                        getRealm().syncExec(() -> {
index 267217c2003faed937dd51d88ab94f5eb0e59af1..321141abcdfdb900f13ff340c781c08eeb06445d 100644 (file)
@@ -2,12 +2,10 @@ package org.simantics.document.server.state;
 
 import org.simantics.db.ReadGraph;
 import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.layer0.variable.NodeSupport;
-import org.simantics.simulator.toolkit.StandardNodeManager;
 import org.simantics.simulator.toolkit.StandardRealm;
-import org.simantics.simulator.toolkit.db.StandardSessionManager;
+import org.simantics.simulator.toolkit.db.StandardVariableSessionManager;
 
-public class StateSessionManager extends StandardSessionManager<StateNode, StateNodeManagerSupport> {
+public class StateSessionManager extends StandardVariableSessionManager<StateNode, StateNodeManagerSupport> {
 
        private static StateSessionManager INSTANCE;
 
@@ -28,10 +26,4 @@ public class StateSessionManager extends StandardSessionManager<StateNode, State
                return new StateRealm(engine, id);
        }
 
-       @Override
-       public void registerNodeSupport(StandardNodeManager<StateNode, StateNodeManagerSupport> manager,
-                       NodeSupport<StateNode> support) {
-               ((StateNodeManager)manager).registerSupport(support);
-       }
-
 }
index f6a6077e46d598c00b16bb2a09f1f659f54c82a2..17ffcf143cc679b7f25685069c8c9e2023ea9533 100644 (file)
@@ -21,7 +21,7 @@ import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.NodeSupport;
 import org.simantics.jdbc.SimanticsJDBC;
 import org.simantics.simulator.toolkit.StandardRealm;
-import org.simantics.simulator.toolkit.db.StandardSessionManager;
+import org.simantics.simulator.toolkit.db.StandardVariableSessionManager;
 import org.simantics.simulator.variable.exceptions.NodeManagerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,7 +30,7 @@ import com.impossibl.postgres.api.jdbc.PGConnection;
 import com.impossibl.postgres.api.jdbc.PGNotificationListener;
 import com.impossibl.postgres.jdbc.PGDataSource;
 
-public class JDBCSessionManager extends StandardSessionManager<JDBCNode, JDBCNodeManagerSupport> {
+public class JDBCSessionManager extends StandardVariableSessionManager<JDBCNode, JDBCNodeManagerSupport> {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(JDBCSessionManager.class);
     private static JDBCSessionManager INSTANCE = new JDBCSessionManager();
index e1f17996505f6d34ec2131f489f97552f0743327..ea3f61e80fe0904251ac2cd4af2a44581717f392 100644 (file)
@@ -235,7 +235,7 @@ public class ComponentTypeViewerData {
         combo.addListener(SWT.Traverse, listener);
     }
 
-    protected void editUnit(Table table, TableEditor editor, final ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column) {
+    public void editUnit(Table table, TableEditor editor, final ComponentTypeViewerPropertyInfo propertyInfo, TableItem selectedItem, int column) {
         // Disallow unit editing for non-numeric configuration properties
         if (propertyInfo.numberType == null && propertyInfo.sectionSpecificData == null)
             return;
index 57ba4c462e09f7c0000846e38a3b19be982dcc4a..c5e77383f4be7330063696ca84807d28d3a6d3f7 100644 (file)
@@ -4,6 +4,7 @@ import org.simantics.databoard.annotations.Optional;
 import org.simantics.databoard.type.NumberType;
 import org.simantics.db.Resource;
 import org.simantics.utils.strings.AlphanumComparator;
+import org.simantics.utils.strings.StringUtils;
 
 public class ComponentTypeViewerPropertyInfo implements Comparable<ComponentTypeViewerPropertyInfo> {
     public Resource resource;
@@ -135,6 +136,16 @@ public class ComponentTypeViewerPropertyInfo implements Comparable<ComponentType
             return false;
         return true;
     }
-    
-    
+
+    public String unitString() {
+        String result = numberType == null ? null : numberType.getUnit();
+        if (result == null)
+            result = unit;
+        return StringUtils.safeString(result);
+    }
+
+    public String rangeString() {
+        return StringUtils.safeString(numberType == null ? null : numberType.getRangeStr());
+    }
+
 }
\ No newline at end of file
index 9a2a713df0fa8807ddd55ac48935343ad824bb5f..e919aa71f00d01a8fa27b926a022aef077609e38 100644 (file)
@@ -530,8 +530,8 @@ public class ConfigurationPropertiesSection implements ComponentTypeViewerSectio
             item.setText(0, info.name);
             item.setText(1, info.type);
             item.setText(2, info.defaultValue);
-            item.setText(3, unitStr(info));
-            item.setText(4, rangeStr(info));
+            item.setText(3, info.unitString());
+            item.setText(4, info.rangeString());
             item.setText(5, info.label);
             item.setText(6, info.description);
 
@@ -574,18 +574,6 @@ public class ConfigurationPropertiesSection implements ComponentTypeViewerSectio
         }
     }
 
-    private String unitStr(ComponentTypeViewerPropertyInfo info) {
-        String unit = info.numberType == null ? null : info.numberType.getUnit();
-        if (unit == null)
-            unit = info.unit;
-        return unit != null ? unit : "";
-    }
-
-    private String rangeStr(ComponentTypeViewerPropertyInfo info) {
-        String range = info.numberType == null ? null : info.numberType.getRangeStr();
-        return range != null ? range : "";
-    }
-    
     @Override
     public void setReadOnly(boolean readOnly) {
         boolean e = !readOnly;
index 1fa503515b4e840c8bd5c55a7b1ae8729fa2626b..19d9e6f29dc5c0f7e12b8e18844cb1d8999f6561 100644 (file)
@@ -43,11 +43,11 @@ import org.simantics.structural.stubs.StructuralResource2;
 
 public class DerivedPropertiesSection implements ComponentTypeViewerSection {
     private static final String[] COLUMN_NAMES = 
-            new String[] {"Name", "Type", "Expression", "Label", "Description"};
+            new String[] {"Name", "Type", "Expression", "Unit", "Label", "Description"};
     private static final int[] COLUMN_LENGTHS =
-            new int[] { 120, 100, 100, 100, 100 };
+            new int[] { 120, 100, 100, 70, 100, 100 };
     private static final int[] COLUMN_WEIGHTS =
-            new int[] { 0, 0, 100, 0, 0 };
+            new int[] { 0, 0, 100, 0, 0, 0 };
     private static Function4<RequestProcessor, Resource, Resource, String, String> VALIDATE_MONITOR_EXPRESSION =
             new Function4<RequestProcessor, Resource, Resource, String, String>() {
         @Override
@@ -155,11 +155,11 @@ public class DerivedPropertiesSection implements ComponentTypeViewerSection {
                     }, VALIDATE_MONITOR_EXPRESSION);
                     break;
 
-//                case 3:
-//                    editUnit(table2, editor2, propertyInfo, selectedItem, column);
-//                    break;
-
                 case 3:
+                    data.editUnit(table, editor, propertyInfo, selectedItem, column);
+                    break;
+
+                case 4:
                     data.editValue(table, editor, propertyInfo, selectedItem, column, propertyInfo.immutable ? null : new StringWriter() {
                         @Override
                         public void perform(WriteGraph graph, String newValue) throws DatabaseException {
@@ -170,7 +170,7 @@ public class DerivedPropertiesSection implements ComponentTypeViewerSection {
                     }, null);
                     break;
 
-                case 4:
+                case 5:
                     data.editMultilineText(table, editor, propertyInfo, selectedItem, selectedItemBounds, column, new StringWriter() {
                         @Override
                         public void perform(WriteGraph graph, String newValue) throws DatabaseException {
@@ -330,9 +330,9 @@ public class DerivedPropertiesSection implements ComponentTypeViewerSection {
             item.setText(0, info.valid != null ? info.name + " (!)" : info.name);
             item.setText(1, info.type);
             item.setText(2, info.expression);
-            //item.setText(3, unitStr(info));
-            item.setText(3, info.label);
-            item.setText(4, info.description);
+            item.setText(3, info.unitString());
+            item.setText(4, info.label);
+            item.setText(5, info.description);
 
             item.setForeground(fg);
 
@@ -376,4 +376,4 @@ public class DerivedPropertiesSection implements ComponentTypeViewerSection {
         return 100.0;
     }
 
-}
+}
\ No newline at end of file
index c8bf80cd8520b8152e994f93f48ae6b69650da57..21126cccca89eebcac44a0f3cae4df133922a77e 100644 (file)
@@ -24,18 +24,18 @@ import org.simantics.browsing.ui.NodeContext;
 import org.simantics.browsing.ui.NodeContext.ConstantKey;
 import org.simantics.browsing.ui.common.NodeContextBuilder;
 import org.simantics.browsing.ui.common.NodeContextBuilder.MapNodeContext;
+import org.simantics.browsing.ui.common.state.GraphExplorerStateBean;
+import org.simantics.browsing.ui.common.state.GraphExplorerStateNodeBean;
+import org.simantics.browsing.ui.common.state.IdentifiedStatePersistor;
+import org.simantics.browsing.ui.common.state.StringArrayBean;
+import org.simantics.browsing.ui.common.state.StringBean;
 import org.simantics.browsing.ui.model.actions.ActionBrowseContext;
 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;
 import org.simantics.browsing.ui.model.browsecontexts.BrowseContexts;
 import org.simantics.browsing.ui.model.nodetypes.EntityNodeType;
 import org.simantics.browsing.ui.model.nodetypes.NodeType;
 import org.simantics.browsing.ui.model.nodetypes.SpecialNodeType;
-import org.simantics.browsing.ui.swt.GraphExplorerStateBean;
-import org.simantics.browsing.ui.swt.GraphExplorerStateNodeBean;
-import org.simantics.browsing.ui.swt.IdentifiedStatePersistor;
 import org.simantics.browsing.ui.swt.NodeContextValueBean;
-import org.simantics.browsing.ui.swt.StringArrayBean;
-import org.simantics.browsing.ui.swt.StringBean;
 import org.simantics.databoard.Bindings;
 import org.simantics.databoard.binding.impl.ArrayListBinding;
 import org.simantics.databoard.util.Bean;
index 0afdb03b7222c1f0d5f95fb8cc3c51c0d082bdb1..ea4de26b22da5fe935c6153093ed476304278954 100644 (file)
@@ -11,8 +11,6 @@
  *******************************************************************************/
 package org.simantics.modeling.userComponent;
 
-import gnu.trove.map.hash.THashMap;
-
 import java.util.Map;
 
 import org.simantics.databoard.Bindings;
@@ -47,6 +45,8 @@ import org.simantics.structural2.utils.StructuralUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import gnu.trove.map.hash.THashMap;
+
 public class ComponentTypeCommands {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ComponentTypeCommands.class);
@@ -334,24 +334,24 @@ public class ComponentTypeCommands {
             return;
         }
 
-        Datatype dt = graph.getDataType(object);
-        if (dt instanceof NumberType) {
-            NumberType nt = (NumberType) dt;
-            Binding ntb = Bindings.getBindingUnchecked(Datatype.class);
-            nt.setUnit(unit);
+        Layer0X L0X = Layer0X.getInstance(graph);
+        boolean hasRequiresDataType = graph.hasStatement(relation, L0X.RequiresDataType);
+        if (hasRequiresDataType) {
+            Datatype dt = graph.getDataType(object);
+            if (dt instanceof NumberType) {
+                Layer0 L0 = Layer0.getInstance(graph);
+                NumberType nt = (NumberType) Bindings.DATATYPE.cloneUnchecked(dt);
+                nt.setUnit(unit);
+                graph.claimLiteral(object, L0.HasDataType, L0.DataType, nt, Bindings.DATATYPE);
+                graph.claimLiteral(relation, L0X.RequiresDataType, L0.DataType, nt, Bindings.DATATYPE);
+            }
+        }
 
-            Layer0 L0 = Layer0.getInstance(graph);
-            Layer0X L0X = Layer0X.getInstance(graph);
-            
-            String oldUnit = graph.getPossibleRelatedValue2(relation, L0X.HasUnit, Bindings.STRING);
+        String oldUnit = graph.getPossibleRelatedValue2(relation, L0X.HasUnit, Bindings.STRING);
+        graph.claimLiteral(relation, L0X.HasUnit, unit, Bindings.STRING);
 
-            graph.claimLiteral(object, L0.HasDataType, L0.DataType, nt, ntb);
-            graph.claimLiteral(relation, L0X.RequiresDataType, L0.DataType, nt, ntb);
-            graph.claimLiteral(relation, L0X.HasUnit, unit, Bindings.STRING);
-            
-            CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
-            graph.addMetadata(cm.add("Setted unit from " + oldUnit + " to " + unit + " for component/annotation " + type));
-        }
+        CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
+        graph.addMetadata(cm.add("Set unit from " + oldUnit + " to " + unit + " for component/annotation " + type + " property " + relation));
     }
 
     /**
index d09c829d77395900d74962a3ac88b1b7dd6b5b53..b9b735d66eecf938d4e85c377545e360222b40d1 100644 (file)
@@ -5,7 +5,8 @@ Bundle-SymbolicName: org.simantics.simulator.toolkit.db
 Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.simantics.simulator.toolkit;bundle-version="1.0.0";visibility:=reexport,
- org.simantics.db.layer0;bundle-version="1.1.0"
+ org.simantics.db.layer0;bundle-version="1.1.0",
+ org.slf4j.api;bundle-version="1.7.25"
 Export-Package: org.simantics.simulator.toolkit.db
 Bundle-Vendor: Semantum Oy
 Automatic-Module-Name: org.simantics.simulator.toolkit.db
index 47b6782825a731de43ac32e00dbaccaa2a0ac2ca..2ad2546a6b9573ec7b74408baacf5ce959f272c5 100644 (file)
@@ -1,130 +1,7 @@
 package org.simantics.simulator.toolkit.db;
 
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.simantics.db.ReadGraph;
-import org.simantics.db.WriteGraph;
-import org.simantics.db.common.request.ParametrizedPrimitiveRead;
-import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.layer0.variable.NodeSupport;
-import org.simantics.db.procedure.Listener;
-import org.simantics.simulator.toolkit.StandardNodeManager;
 import org.simantics.simulator.toolkit.StandardNodeManagerSupport;
-import org.simantics.simulator.toolkit.StandardRealm;
-
-public abstract class StandardSessionManager<Node, Engine extends StandardNodeManagerSupport<Node>> {
-
-    private ConcurrentHashMap<String, Listener<StandardRealm<Node,Engine>>> realmListeners = new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, StandardRealm<Node,Engine>> REALMS = new ConcurrentHashMap<>(); 
-    private ConcurrentHashMap<String, NodeSupport<Node>> SUPPORTS = new ConcurrentHashMap<>(); 
-
-    // Accessing Realms should be done over ParametrizedPrimitveRead for the
-    // case if a realm is destroyed and new one is created with the same id than
-    // the previously deleted one for the listeners to get discarded and new
-    // registered
-    private class RealmRequest extends ParametrizedPrimitiveRead<String, StandardRealm<Node, Engine>> {
-
-        public RealmRequest(String parameter) {
-            super(parameter);
-        }
-
-        @Override
-        public void register(ReadGraph graph, Listener<StandardRealm<Node, Engine>> procedure) {
-            StandardRealm<Node, Engine> realm = REALMS.get(parameter);
-            if (realm == null) {
-                try {
-                    realm = createRealmInner(graph, parameter);
-                } catch (DatabaseException e) {
-                    e.printStackTrace();
-                }
-            }
-
-            if(procedure.isDisposed()) {
-                procedure.execute(realm);
-                return;
-            }
-
-            Listener<StandardRealm<Node,Engine>> existing = getOrDisposeListener(parameter);
-            assert(existing == null);
-            realmListeners.put(parameter, procedure);
-            procedure.execute(realm);
-        }
-
-        private StandardRealm<Node,Engine> createRealmInner(ReadGraph graph, String id) throws DatabaseException {
-            Engine engine = createEngine(graph, id);
-            StandardRealm<Node,Engine> realm = createRealm(engine, id);
-            modifyRealms(id, realm);
-            return realm;
-        }
-    }
-
-    protected StandardSessionManager() {
-    }
-
-    private Listener<StandardRealm<Node,Engine>> getOrDisposeListener(String key) {
-        Listener<StandardRealm<Node,Engine>> listener = realmListeners.get(key);
-        if(listener != null) {
-            if(listener.isDisposed()) {
-                realmListeners.remove(key);
-            } else {
-                return listener;
-            }
-        }
-        return null;
-    }
-
-    private void modifyRealms(String key, StandardRealm<Node,Engine> realm) {
-        if(realm != null) {
-            REALMS.put(key, realm);
-        } else {
-            StandardRealm<Node, Engine> removedRealm = REALMS.remove(key);
-            if (removedRealm != null)
-                removedRealm.close();
-        }
-        Listener<StandardRealm<Node,Engine>> listener = getOrDisposeListener(key);
-        if(listener != null) {
-            listener.execute(realm);
-        }
-    }
-
-    public void registerNodeSupport(StandardNodeManager<Node,Engine> realm, NodeSupport<Node> support) {
-    
-    }
-
-    public NodeSupport<Node> getOrCreateNodeSupport(ReadGraph graph, String id) throws DatabaseException {
-        synchronized(SUPPORTS) {
-            NodeSupport<Node> result = SUPPORTS.get(id);
-            if(result == null) {
-                StandardRealm<Node,Engine> realm = getOrCreateRealm(graph, id);
-                result = new NodeSupport<Node>(realm.getNodeManager());
-                registerNodeSupport(realm.getNodeManager(), result);
-                SUPPORTS.put(id, result);
-            }
-            return result;
-        }
-    }
-
-    public StandardRealm<Node,Engine> getOrCreateRealm(ReadGraph graph, String id) throws DatabaseException {
-        synchronized(REALMS) {
-            return graph.syncRequest(new RealmRequest(id));
-        }
-    }
-
-    protected abstract Engine createEngine(ReadGraph graph, String id) throws DatabaseException;
-    protected abstract StandardRealm<Node,Engine> createRealm(Engine engine, String id);
 
-    public void removeRealm(WriteGraph graph, String id) throws DatabaseException {
-        modifyRealms(id, null);
-        // remove listeners from this realm
-        realmListeners.remove(id);
-        // if node support has been created remove it as well
-        NodeSupport<Node> support = SUPPORTS.remove(id);
-        if (support != null)
-            support.dispose();
-    }
+public abstract class StandardSessionManager<Node, Engine extends StandardNodeManagerSupport<Node>> extends StandardVariableSessionManager<Node,Engine> {
 
-    public Collection<String> getRealms() {
-        return REALMS.keySet();
-    }
 }
diff --git a/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableManagerVariableBuilder.java b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableManagerVariableBuilder.java
new file mode 100644 (file)
index 0000000..7699a24
--- /dev/null
@@ -0,0 +1,29 @@
+package org.simantics.simulator.toolkit.db;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.NodeManagerVariableBuilder;
+import org.simantics.db.layer0.variable.NodeSupport;
+import org.simantics.simulator.toolkit.StandardNodeManager;
+
+public abstract class StandardVariableManagerVariableBuilder extends NodeManagerVariableBuilder {
+
+    @Override
+    protected Object getRoot(ReadGraph graph, NodeSupport<?> support, String sessionName) {
+        StandardNodeManager manager = (StandardNodeManager)support.manager;
+        return manager.getRoot();
+    }
+    
+    /*
+     * For compatibility reasons. Existing implementations implement getNodeSupport directly and in that case this is not needed.
+     * New implementations should not implement getNodeSupport but rather implement this.
+     */
+    protected StandardVariableSessionManager getSessionManager() {
+        throw new UnsupportedOperationException();
+    }
+    
+    protected NodeSupport<?> getNodeSupport(ReadGraph graph, String sessionName) throws DatabaseException {
+        return getSessionManager().getOrCreateNodeSupport(graph, sessionName);
+    }
+
+}
diff --git a/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableNodeManager.java b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableNodeManager.java
new file mode 100644 (file)
index 0000000..883f809
--- /dev/null
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *     Semantum Oy - initial API and implementation
+ *******************************************************************************/
+package org.simantics.simulator.toolkit.db;
+
+import org.simantics.db.layer0.variable.NodeSupport;
+import org.simantics.simulator.toolkit.StandardNodeManager;
+import org.simantics.simulator.toolkit.StandardNodeManagerSupport;
+import org.simantics.simulator.toolkit.StandardRealm;
+
+/**
+ * Adds support for Layer0 Variable interface in StandardNodeManager
+ *
+ * @author Antti Villberg
+ */
+public class StandardVariableNodeManager<Node, Engine extends StandardNodeManagerSupport<Node>> extends StandardNodeManager<Node,Engine> {
+
+    protected NodeSupport<Node> support;
+
+    public StandardVariableNodeManager(StandardRealm<Node, Engine> realm, Node root) {
+        super(realm, root);
+        this.support = new NodeSupport<>(this);
+    }
+
+/*    public void registerNodeSupport(NodeSupport<Node> support) {
+        this.support = support;
+    }
+
+
+    public void registerSupport(NodeSupport<Node> support) {
+        this.support = support;
+    }*/
+
+    @Override
+    public void refreshVariable(Node node) {
+        super.refreshVariable(node);
+        support.valueCache.clearExpired();
+        support.structureCache.clearExpired();
+    }
+
+}
\ No newline at end of file
diff --git a/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableRealm.java b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableRealm.java
new file mode 100644 (file)
index 0000000..6ed50d4
--- /dev/null
@@ -0,0 +1,18 @@
+package org.simantics.simulator.toolkit.db;
+
+import org.simantics.simulator.toolkit.StandardNodeManager;
+import org.simantics.simulator.toolkit.StandardNodeManagerSupport;
+import org.simantics.simulator.toolkit.StandardRealm;
+
+public abstract class StandardVariableRealm<Node, Engine extends StandardNodeManagerSupport<Node>> extends StandardRealm<Node, Engine> {
+
+    protected StandardVariableRealm(Engine engine, String id) {
+        super(engine, id);
+    }
+
+    @Override
+    protected StandardNodeManager<Node, Engine> createManager(Node root) {
+        return new StandardVariableNodeManager<Node, Engine>(this, root);
+    }
+
+}
\ No newline at end of file
diff --git a/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableSessionManager.java b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardVariableSessionManager.java
new file mode 100644 (file)
index 0000000..5e824f4
--- /dev/null
@@ -0,0 +1,129 @@
+package org.simantics.simulator.toolkit.db;
+
+import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.request.ParametrizedPrimitiveRead;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.NodeSupport;
+import org.simantics.db.procedure.Listener;
+import org.simantics.simulator.toolkit.StandardNodeManagerSupport;
+import org.simantics.simulator.toolkit.StandardRealm;
+import org.simantics.simulator.variable.NodeManager;
+
+public abstract class StandardVariableSessionManager<Node, Engine extends StandardNodeManagerSupport<Node>> {
+
+    private ConcurrentHashMap<String, Listener<StandardRealm<Node,Engine>>> realmListeners = new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, StandardRealm<Node,Engine>> REALMS = new ConcurrentHashMap<>();
+    private ConcurrentHashMap<String, NodeSupport<Node>> SUPPORTS = new ConcurrentHashMap<>();
+
+    // Accessing Realms should be done over ParametrizedPrimitveRead for the
+    // case if a realm is destroyed and new one is created with the same id than
+    // the previously deleted one for the listeners to get discarded and new
+    // registered
+    private class RealmRequest extends ParametrizedPrimitiveRead<String, StandardRealm<Node, Engine>> {
+
+        public RealmRequest(String parameter) {
+            super(parameter);
+        }
+
+        @Override
+        public void register(ReadGraph graph, Listener<StandardRealm<Node, Engine>> procedure) {
+            StandardRealm<Node, Engine> realm = REALMS.get(parameter);
+            if (realm == null) {
+                try {
+                    realm = createRealmInner(graph, parameter);
+                } catch (DatabaseException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            if(procedure.isDisposed()) {
+                procedure.execute(realm);
+                return;
+            }
+
+            Listener<StandardRealm<Node,Engine>> existing = getOrDisposeListener(parameter);
+            assert(existing == null);
+            realmListeners.put(parameter, procedure);
+            procedure.execute(realm);
+        }
+
+        private StandardRealm<Node,Engine> createRealmInner(ReadGraph graph, String id) throws DatabaseException {
+            Engine engine = createEngine(graph, id);
+            StandardRealm<Node,Engine> realm = createRealm(engine, id);
+            modifyRealms(id, realm);
+            return realm;
+        }
+    }
+
+    protected StandardVariableSessionManager() {
+    }
+
+    private Listener<StandardRealm<Node,Engine>> getOrDisposeListener(String key) {
+        Listener<StandardRealm<Node,Engine>> listener = realmListeners.get(key);
+        if(listener != null) {
+            if(listener.isDisposed()) {
+                realmListeners.remove(key);
+            } else {
+                return listener;
+            }
+        }
+        return null;
+    }
+
+    private void modifyRealms(String key, StandardRealm<Node,Engine> realm) {
+        if(realm != null) {
+            REALMS.put(key, realm);
+        } else {
+            StandardRealm<Node, Engine> removedRealm = REALMS.remove(key);
+            if (removedRealm != null)
+                removedRealm.close();
+        }
+        Listener<StandardRealm<Node,Engine>> listener = getOrDisposeListener(key);
+        if(listener != null) {
+            listener.execute(realm);
+        }
+    }
+
+    public NodeSupport<Node> getOrCreateNodeSupport(ReadGraph graph, String id) throws DatabaseException {
+        synchronized(SUPPORTS) {
+            NodeSupport<Node> result = SUPPORTS.get(id);
+            if(result == null) {
+                StandardRealm<Node,Engine> realm = getOrCreateRealm(graph, id);
+                NodeManager nodeManager = realm.getNodeManager();
+                if(!(nodeManager instanceof StandardVariableNodeManager))
+                    throw new DatabaseException("StandardVariableSessionManager requires an instance of  StandardVariableNodeManager, got " + nodeManager.getClass());
+                StandardVariableNodeManager svnm = (StandardVariableNodeManager)nodeManager;
+                result = svnm.support;
+                SUPPORTS.put(id, result);
+            }
+            return result;
+        }
+    }
+
+    public StandardRealm<Node,Engine> getOrCreateRealm(ReadGraph graph, String id) throws DatabaseException {
+        synchronized(REALMS) {
+            return graph.syncRequest(new RealmRequest(id));
+        }
+    }
+
+    protected abstract Engine createEngine(ReadGraph graph, String id) throws DatabaseException;
+    protected abstract StandardRealm<Node,Engine> createRealm(Engine engine, String id);
+
+    public void removeRealm(WriteGraph graph, String id) throws DatabaseException {
+        modifyRealms(id, null);
+        // remove listeners from this realm
+        realmListeners.remove(id);
+        // if node support has been created remove it as well
+        NodeSupport<Node> support = SUPPORTS.remove(id);
+        if (support != null)
+            support.dispose();
+    }
+
+    public Collection<String> getRealms() {
+        return REALMS.keySet();
+    }
+}
index 8a51fd330764959e7c62f4cc292c2ab2e36fb0c0..b8a549087fdb1c745cb6287f95b5faf7ba88a892 100644 (file)
@@ -13,6 +13,7 @@
 package org.simantics.simulator.toolkit;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -46,7 +47,7 @@ import gnu.trove.set.hash.THashSet;
  *
  * @author Antti Villberg
  */
-public abstract class StandardNodeManager<Node, Engine extends StandardNodeManagerSupport<Node>> implements NodeManager<Node> {
+public class StandardNodeManager<Node, Engine extends StandardNodeManagerSupport<Node>> implements NodeManager<Node> {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(StandardNodeManager.class);
 
@@ -424,4 +425,9 @@ public abstract class StandardNodeManager<Node, Engine extends StandardNodeManag
         listeners.clear();
     }
 
+    @Override
+    public Set<String> getClassifications(Node node) throws NodeManagerException {
+        return Collections.emptySet();
+    }
+
 }
\ No newline at end of file
index e228b603d803d86a2fa6146bccbdd51a294b57ad..8551222b22d2183b866aff466a83e35a537e8dcf 100644 (file)
@@ -46,7 +46,21 @@ abstract public class StandardRealm<Node, Engine extends StandardNodeManagerSupp
         this.nodeManager = createManager();
     }
 
-    abstract protected StandardNodeManager<Node, Engine> createManager();
+    protected StandardNodeManager<Node, Engine> createManager(Node root) {
+        return new StandardNodeManager<Node, Engine>(this, root);
+    }
+
+    protected StandardNodeManager<Node, Engine> createManager() {
+        return createManager(createRootNode());
+    }
+
+    /*
+     * For compatibility reasons. Existing implementations implement createManager() directly and in that case this is not needed.
+     * New implementations should not implement createManager() but rather implement this.
+     */
+    protected Node createRootNode() {
+        throw new UnsupportedOperationException();
+    }
 
     protected String getSCLContextKey() {
         return getClass().getSimpleName();
index 5a7dcd5ee0aae8f1f129158c284ac00cd666deba..d741d4c7abf5870958ff585a675649c9bfc6127c 100644 (file)
@@ -24,12 +24,12 @@ import org.simantics.spreadsheet.graph.synchronization.LineUpdater;
 import org.simantics.spreadsheet.graph.synchronization.NullUpdater;
 import org.simantics.spreadsheet.graph.synchronization.SheetLineComponent;
 import org.simantics.spreadsheet.graph.synchronization.StyleUpdater;
-import org.simantics.structural.synchronization.base.ComponentFactory;
-import org.simantics.structural.synchronization.base.MappingBase;
 import org.simantics.structural.synchronization.base.ModuleUpdaterBase;
 import org.simantics.structural.synchronization.base.ModuleUpdaterFactoryBase;
-import org.simantics.structural.synchronization.base.Solver;
 import org.simantics.structural.synchronization.base.SolverNameUtil;
+import org.simantics.structural.synchronization.utils.ComponentFactory;
+import org.simantics.structural.synchronization.utils.MappingBase;
+import org.simantics.structural.synchronization.utils.Solver;
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
 import it.unimi.dsi.fastutil.longs.AbstractLongList;
index 23ce1cf1166e32cbb18c28a4faac4c0ac18d0307..64079d2b0fe90c3f380cf83ff834c62996e4fc59 100644 (file)
@@ -3,10 +3,10 @@ package org.simantics.spreadsheet.graph;
 import java.io.Serializable;
 
 import org.simantics.spreadsheet.graph.synchronization.SheetLineComponent;
-import org.simantics.structural.synchronization.base.ComponentFactory;
-import org.simantics.structural.synchronization.base.MappingBase;
-import org.simantics.structural.synchronization.base.Solver;
-import org.simantics.structural.synchronization.base.StateUndoContextBase;
+import org.simantics.structural.synchronization.utils.ComponentFactory;
+import org.simantics.structural.synchronization.utils.MappingBase;
+import org.simantics.structural.synchronization.utils.Solver;
+import org.simantics.structural.synchronization.utils.StateUndoContextBase;
 
 public class SpreadsheetMapping extends MappingBase<SheetLineComponent> implements Serializable {
        
index 6428f9b83db4b9d60730ad9ca0a77d1653822d92..6c3c0b17ca9c648f5401f48d181ef6da0b5166c7 100644 (file)
@@ -2,7 +2,7 @@ package org.simantics.spreadsheet.graph;
 
 import org.simantics.spreadsheet.graph.synchronization.SheetLineComponent;
 import org.simantics.structural.synchronization.base.ReferenceResolverBase;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 19c9948060f60787d94d99f441d920fe2653d0f0..f50463ef009f93d55bdf4dc74375c44b57d656cf 100644 (file)
@@ -19,7 +19,7 @@ import org.simantics.db.layer0.variable.ProxyVariables;
 import org.simantics.db.layer0.variable.Variable;
 import org.simantics.db.layer0.variable.Variables;
 import org.simantics.simulator.toolkit.StandardRealm;
-import org.simantics.simulator.toolkit.db.StandardSessionManager;
+import org.simantics.simulator.toolkit.db.StandardVariableSessionManager;
 import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment;
 import org.simantics.spreadsheet.graph.synchronization.SpreadsheetSynchronizationEventHandler;
 import org.simantics.spreadsheet.resource.SpreadsheetResource;
@@ -27,7 +27,7 @@ import org.simantics.structural.synchronization.Synchronizer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class SpreadsheetSessionManager extends StandardSessionManager<SheetNode, SpreadsheetBook> {
+public class SpreadsheetSessionManager extends StandardVariableSessionManager<SheetNode, SpreadsheetBook> {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(SpreadsheetSessionManager.class);
     
index 6e191436142b82b0bb148e209c63bff343da5d78..90c96cc2d017f5be51e411e1aa1f8d0fb7987f9c 100644 (file)
@@ -18,7 +18,7 @@ import org.simantics.spreadsheet.graph.parser.SheetFormulaParser;
 import org.simantics.spreadsheet.graph.parser.ast.AstArrayFormulaReference;
 import org.simantics.spreadsheet.graph.parser.ast.AstValue;
 import org.simantics.structural.synchronization.base.CommandBuilder;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class LineCommandBuilder implements CommandBuilder {
        
index 3462b247f5924a5fd54075620765160883de1116..baa0851b2503006182b9cb53cc055329cfdc8fe1 100644 (file)
@@ -10,7 +10,7 @@ import org.simantics.structural.synchronization.base.CommandBuilder;
 import org.simantics.structural.synchronization.base.ModuleUpdateContext;
 import org.simantics.structural.synchronization.base.ModuleUpdaterBase;
 import org.simantics.structural.synchronization.base.PropertyUpdateRule;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class LineUpdater extends ModuleUpdaterBase<SheetLineComponent> {
        
index be7f25c9e9ef324b83babd23fdfb82e59d43aadb..4cf804c2dd1cb1859591ec050c4fcc6990f160a3 100644 (file)
@@ -3,7 +3,7 @@ package org.simantics.spreadsheet.graph.synchronization;
 import org.simantics.spreadsheet.graph.SpreadsheetBook;
 import org.simantics.spreadsheet.graph.SpreadsheetLines;
 import org.simantics.structural.synchronization.base.CommandBuilder;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class LinesCommandBuilder implements CommandBuilder {
        
index 6e16386f7d28bef6417ef3e707fb8c1301a3cdc0..80ed1ca13cda9743697563548b1ddb45d7f9c680 100644 (file)
@@ -1,7 +1,7 @@
 package org.simantics.spreadsheet.graph.synchronization;
 
 import org.simantics.structural.synchronization.base.CommandBuilder;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class NullCommandBuilder implements CommandBuilder {
        
index c3b40737d9d2710f0ddd90e213b95e13174a83cd..5edea565fa56d00851d7d16582e09fa0fc59b651 100644 (file)
@@ -2,7 +2,7 @@ package org.simantics.spreadsheet.graph.synchronization;
 
 import java.io.Serializable;
 
-import org.simantics.structural.synchronization.base.ComponentBase;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 import gnu.trove.map.hash.THashMap;
 import gnu.trove.procedure.TObjectProcedure;
index de5b47cc829b0edd68a35e3a63958d7f6a19d311..4451d13140a6049d3b3271d90757b4bfcf2921ce 100644 (file)
@@ -12,7 +12,7 @@ import org.simantics.structural.synchronization.base.CommandBuilder;
 import org.simantics.structural.synchronization.base.ModuleUpdateContext;
 import org.simantics.structural.synchronization.base.ModuleUpdaterBase;
 import org.simantics.structural.synchronization.base.PropertyUpdateRule;
-import org.simantics.structural.synchronization.base.Solver;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class StyleUpdater extends ModuleUpdaterBase<SheetLineComponent> {
 
index 45f2791a87beb2e39c7160af06423ee6e875e948..57b8d9a065fab77a17c892bb72b13a587f82dfc7 100644 (file)
@@ -1,5 +1,7 @@
 package org.simantics.structural.synchronization.base;
 
+import org.simantics.structural.synchronization.utils.Solver;
+
 public interface CommandBuilder {
 
        void apply(Solver solver);
index dd59baa5515a005ae8dc5bf883b7fe3f4324c8ab..144833a7ad132c1e0eda8fffe83b20a455d4d482 100644 (file)
@@ -4,6 +4,7 @@ import java.util.Collection;
 import java.util.Map;
 
 import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 public interface ConnectionUpdateRule<T extends ComponentBase<T>> {
 
index 1615aaf2ba35e8e4cd66c1cd009897e2005988fc..854a22d23ab055898c4f4a28dbe33698cc55913b 100644 (file)
@@ -5,6 +5,8 @@ import gnu.trove.map.hash.THashMap;
 import java.util.ArrayList;
 
 import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.structural.synchronization.utils.ComponentBase;
+import org.simantics.structural.synchronization.utils.Solver;
 
 public class ModuleUpdateContext<T extends ComponentBase<T>> {
 
index 9ec63c06167846f619da56d24f939e5603d150ad..45ea7400fbbf8682d0da92ce463cc008fdbe62d1 100644 (file)
@@ -9,6 +9,7 @@ import java.util.Map;
 import org.simantics.databoard.binding.mutable.Variant;
 import org.simantics.structural.synchronization.protocol.Connection;
 import org.simantics.structural.synchronization.protocol.SerializedVariable;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 abstract public class ModuleUpdaterBase<T extends ComponentBase<T>> {
 
index 04320c9465b513fc6c99f4eaf4725886326c6a7d..f30527e3d29822ccfa0d18417740b39e195315b6 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.structural.synchronization.base;
 
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 
 public interface ModuleUpdaterFactoryBase<T extends ComponentBase<T>> {
index 32f94c27cb7a7a9a66bed1182faf24b37dbf2069..a0b734d15c41ca96d028360d95a566c152389d22 100644 (file)
@@ -4,6 +4,7 @@ import java.util.Collection;
 import java.util.Map;
 
 import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 
 public interface PropertyUpdateRule<T extends ComponentBase<T>> {
index 7fabc6747f1c6fe27676fb7483bcad942b928408..33b5d9bdcf424675a281c2279892a489a9ba8ebe 100644 (file)
@@ -8,6 +8,8 @@ import java.util.Collections;
 
 import org.simantics.databoard.util.URIStringUtils;
 import org.simantics.structural.synchronization.protocol.SynchronizationEventHandler;
+import org.simantics.structural.synchronization.utils.ComponentBase;
+import org.simantics.structural.synchronization.utils.Solver;
 import org.slf4j.Logger;
 
 abstract public class ReferenceResolverBase<T extends ComponentBase<T>> {
@@ -116,7 +118,7 @@ abstract public class ReferenceResolverBase<T extends ComponentBase<T>> {
 
     private static void fullPathOfComponent(StringBuilder b, ComponentBase<?> component) {
         if(component != null) {
-            fullPathOfComponent(b, component.parent);
+            fullPathOfComponent(b, component.getParent());
             b.append("/").append(component.solverComponentName);
         }
     }
index 82dd224b6ec2f413f933a60ef5910bcbd72f1382..7be353a0222bac45db628c3655d0faded28078c7 100644 (file)
@@ -15,6 +15,10 @@ import org.simantics.structural.synchronization.protocol.Connection;
 import org.simantics.structural.synchronization.protocol.SerializedVariable;
 import org.simantics.structural.synchronization.protocol.SynchronizationEventHandler;
 import org.simantics.structural.synchronization.protocol.SynchronizationException;
+import org.simantics.structural.synchronization.utils.ComponentBase;
+import org.simantics.structural.synchronization.utils.ComponentFactory;
+import org.simantics.structural.synchronization.utils.MappingBase;
+import org.simantics.structural.synchronization.utils.Solver;
 import org.slf4j.Logger;
 
 import gnu.trove.map.hash.THashMap;
index 0c051ecef9c2445963a957adae56d5c25097239c..df63ada0525911d50cd84c636989f1fe8e30d34c 100644 (file)
@@ -5,6 +5,7 @@ import org.simantics.db.ReadGraph;
 import org.simantics.db.exception.CancelTransactionException;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.Variable;
+import org.simantics.structural.synchronization.utils.ComponentBase;
 
 import gnu.trove.map.hash.THashMap;
 
@@ -1,12 +1,12 @@
-package org.simantics.structural.synchronization.base;
+package org.simantics.structural.synchronization.utils;
+
+import java.io.PrintWriter;
 
 import gnu.trove.map.hash.THashMap;
 import gnu.trove.procedure.TObjectObjectProcedure;
 import gnu.trove.procedure.TObjectProcedure;
 import gnu.trove.set.hash.THashSet;
 
-import java.io.PrintWriter;
-
 /**
  * The entry point to the mapping structure between Simantics database and a
  * designated solver. It is used to synchronize changes from Simantics to the