]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.structural.synchronization.client / src / org / simantics / structural / synchronization / base / ModuleUpdaterBase.java
index c8347f7e22b25d2234353c48f6a7100a46e9ff6b..a3edea09e7ddc8fc89ee7d0b2b03cd4a016cf8f4 100644 (file)
-package org.simantics.structural.synchronization.base;\r
-\r
-import gnu.trove.map.hash.THashMap;\r
-\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.Map;\r
-\r
-import org.simantics.databoard.binding.mutable.Variant;\r
-import org.simantics.structural.synchronization.protocol.Connection;\r
-import org.simantics.structural.synchronization.protocol.SerializedVariable;\r
-\r
-abstract public class ModuleUpdaterBase<T extends ComponentBase<T>> {\r
-\r
-    public String moduleType;\r
-    public THashMap<String, PropertyUpdateRule<T>> propertyUpdateRules =\r
-            new THashMap<String, PropertyUpdateRule<T>>();\r
-    public THashMap<String, ConnectionUpdateRule<T>> connectionUpdateRules =\r
-            new THashMap<String, ConnectionUpdateRule<T>>();\r
-    public boolean isUserComponent;\r
-    public boolean isComposite;\r
-    \r
-    public ModuleUpdaterBase(String moduleType) {\r
-        this.moduleType = moduleType;\r
-    }\r
-    \r
-    public void addPropertyUpdateRule(PropertyUpdateRule<T> rule) {\r
-        propertyUpdateRules.put(rule.getPropertyName(), rule);\r
-    }\r
-    \r
-    public void addConnectionUpdateRule(ConnectionUpdateRule<T> rule) {\r
-        connectionUpdateRules.put(rule.getConnectionPointName(), rule);\r
-    }\r
-\r
-    public void create(ModuleUpdateContext<T> context, Collection<SerializedVariable> properties, Collection<Connection> connections) {\r
-        context.command = createAddCommandBuilder(context.getModuleName()); \r
-        applyRules(context, true, properties, connections);\r
-    }\r
-    \r
-    abstract public CommandBuilder createAddCommandBuilder(String name);\r
-\r
-    public void update(ModuleUpdateContext<T> context, Collection<SerializedVariable> properties, Collection<Connection> connections) {\r
-        // Check that the module type matches\r
-        int moduleTypeId = context.getSolver().getModuleType(context.getModuleId());\r
-        String moduleTypeName = context.getSolver().getName(moduleTypeId);\r
-        if(!moduleTypeName.equals(moduleType)) {\r
-            context.getSolver().remove(context.getModuleId());\r
-            context.component.componentId = -1;\r
-            context.setModuleId(-1);\r
-            create(context, properties, connections);\r
-        }\r
-        \r
-        // Update\r
-        else {\r
-            context.command = createUpdateCommandBuilder(context.getModuleName());\r
-            applyRules(context, false, properties, connections);\r
-        }\r
-    }\r
-    \r
-    abstract public CommandBuilder createUpdateCommandBuilder(String name);\r
-    \r
-    private void applyRules(ModuleUpdateContext<T> context, boolean inCreate,\r
-            Collection<SerializedVariable> properties, Collection<Connection> connections) {\r
-        THashMap<String, Variant> propertyMap = new THashMap<String, Variant>(properties.size());\r
-        Map<String, Collection<String>> connectionMap = connections.isEmpty()\r
-                ? Collections.<String, Collection<String>>emptyMap()\r
-                : new THashMap<String, Collection<String>>(connections.size());\r
-        for(SerializedVariable property : properties)\r
-            propertyMap.put(property.name, property.value);\r
-        for(Connection connection : connections)\r
-            connectionMap.put(connection.relation, connection.connectionPoints);\r
-\r
-        context.incPendingCount(); // To prevent premature execution of the command\r
-        for(SerializedVariable property : properties) {\r
-            PropertyUpdateRule<T> rule = propertyUpdateRules.get(property.name);\r
-            if(rule != null)\r
-                rule.apply(context, inCreate, propertyMap, connectionMap, property.value);\r
-            else if(property.name.equals("IsAttached"))\r
-                ;\r
-            else\r
-                if(SynchronizationEventHandlerBase.TRACE_EVENTS)\r
-                    System.out.println("    skipped property " + property.name + " " + property.toString());\r
-        }\r
-        if(inCreate) {\r
-            for(Connection connection : connections) {\r
-                ConnectionUpdateRule<T> rule = connectionUpdateRules.get(connection.relation);\r
-                if(rule != null)\r
-                    rule.apply(context, propertyMap, connection.connectionPoints);\r
-                else\r
-                       if(SynchronizationEventHandlerBase.TRACE_EVENTS)\r
-                           System.out.println("    skipped connection " + connection.relation + " " + connection.connectionPoints);\r
-            }\r
-        }\r
-        else {\r
-            THashMap<String, ConnectionUpdateRule<T>> unusedConnectionUpdateRules =\r
-                    new THashMap<String, ConnectionUpdateRule<T>>(connectionUpdateRules);\r
-            for(Connection connection : connections) {\r
-                ConnectionUpdateRule<T> rule = unusedConnectionUpdateRules.remove(connection.relation);\r
-                if(rule != null)\r
-                    rule.apply(context, propertyMap, connection.connectionPoints);\r
-                else\r
-                    if(SynchronizationEventHandlerBase.TRACE_EVENTS)\r
-                        System.out.println("    skipped connection " + connection.relation + " " + connection.connectionPoints);\r
-            }\r
-            for(ConnectionUpdateRule<T> rule : unusedConnectionUpdateRules.values())\r
-                rule.apply(context, propertyMap, Collections.<String>emptyList());\r
-        }\r
-        context.decPendingCount();\r
-    }\r
-\r
-}\r
+package org.simantics.structural.synchronization.base;
+
+import gnu.trove.map.hash.THashMap;
+
+import java.util.Collection;
+import java.util.Collections;
+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;
+
+abstract public class ModuleUpdaterBase<T extends ComponentBase<T>> {
+
+    public String moduleType;
+    public THashMap<String, PropertyUpdateRule<T>> propertyUpdateRules =
+            new THashMap<String, PropertyUpdateRule<T>>();
+    public THashMap<String, ConnectionUpdateRule<T>> connectionUpdateRules =
+            new THashMap<String, ConnectionUpdateRule<T>>();
+    public boolean isUserComponent;
+    public boolean isComposite;
+    
+    public ModuleUpdaterBase(String moduleType) {
+        this.moduleType = moduleType;
+    }
+    
+    public void addPropertyUpdateRule(PropertyUpdateRule<T> rule) {
+        propertyUpdateRules.put(rule.getPropertyName(), rule);
+    }
+    
+    public void addConnectionUpdateRule(ConnectionUpdateRule<T> rule) {
+        connectionUpdateRules.put(rule.getConnectionPointName(), rule);
+    }
+
+    public void create(ModuleUpdateContext<T> context, Collection<SerializedVariable> properties, Collection<Connection> connections) {
+        context.command = createAddCommandBuilder(context.getModuleName()); 
+        applyRules(context, true, properties, connections);
+    }
+    
+    abstract public CommandBuilder createAddCommandBuilder(String name);
+
+    public void update(ModuleUpdateContext<T> context, Collection<SerializedVariable> properties, Collection<Connection> connections) {
+        // Check that the module type matches
+        int moduleTypeId = context.getSolver().getModuleType(context.getModuleId());
+        String moduleTypeName = context.getSolver().getName(moduleTypeId);
+        if(!moduleTypeName.equals(moduleType)) {
+            context.getSolver().remove(context.getModuleId());
+            context.component.componentId = -1;
+            context.setModuleId(-1);
+            create(context, properties, connections);
+        }
+        
+        // Update
+        else {
+            context.command = createUpdateCommandBuilder(context.getModuleName());
+            applyRules(context, false, properties, connections);
+        }
+    }
+    
+    abstract public CommandBuilder createUpdateCommandBuilder(String name);
+    
+    private void applyRules(ModuleUpdateContext<T> context, boolean inCreate,
+            Collection<SerializedVariable> properties, Collection<Connection> connections) {
+        THashMap<String, Variant> propertyMap = new THashMap<String, Variant>(properties.size());
+        Map<String, Collection<String>> connectionMap = connections.isEmpty()
+                ? Collections.<String, Collection<String>>emptyMap()
+                : new THashMap<String, Collection<String>>(connections.size());
+        for(SerializedVariable property : properties)
+            propertyMap.put(property.name, property.value);
+        for(Connection connection : connections)
+            connectionMap.put(connection.relation, connection.connectionPoints);
+
+        context.incPendingCount(); // To prevent premature execution of the command
+        for(SerializedVariable property : properties) {
+            PropertyUpdateRule<T> rule = propertyUpdateRules.get(property.name);
+            if(rule != null)
+                rule.apply(context, inCreate, propertyMap, connectionMap, property.value);
+            else if(property.name.equals("IsAttached"))
+                ;
+            else
+                if(SynchronizationEventHandlerBase.TRACE_EVENTS)
+                    System.out.println("    skipped property " + property.name + " " + property.toString());
+        }
+        if(inCreate) {
+            for(Connection connection : connections) {
+                ConnectionUpdateRule<T> rule = connectionUpdateRules.get(connection.relation);
+                if(rule != null)
+                    rule.apply(context, propertyMap, connection.connectionPoints);
+                else
+                       if(SynchronizationEventHandlerBase.TRACE_EVENTS)
+                           System.out.println("    skipped connection " + connection.relation + " " + connection.connectionPoints);
+            }
+        }
+        else {
+            THashMap<String, ConnectionUpdateRule<T>> unusedConnectionUpdateRules =
+                    new THashMap<String, ConnectionUpdateRule<T>>(connectionUpdateRules);
+            for(Connection connection : connections) {
+                ConnectionUpdateRule<T> rule = unusedConnectionUpdateRules.remove(connection.relation);
+                if(rule != null)
+                    rule.apply(context, propertyMap, connection.connectionPoints);
+                else
+                    if(SynchronizationEventHandlerBase.TRACE_EVENTS)
+                        System.out.println("    skipped connection " + connection.relation + " " + connection.connectionPoints);
+            }
+            for(ConnectionUpdateRule<T> rule : unusedConnectionUpdateRules.values())
+                rule.apply(context, propertyMap, Collections.<String>emptyList());
+        }
+        context.decPendingCount();
+    }
+
+}