]> gerrit.simantics Code Review - simantics/sysdyn.git/commitdiff
Allow whitespace in Sysdyn modules and module types (refs #4882).
authormiettinen <miettinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Wed, 20 Aug 2014 12:15:36 +0000 (12:15 +0000)
committermiettinen <miettinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Wed, 20 Aug 2014 12:15:36 +0000 (12:15 +0000)
git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@30101 ac1ea38d-2e2b-0410-8846-a27921b304fc

org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/utils/NameValidator.java
org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java
org.simantics.sysdyn/src/org/simantics/sysdyn/modelica/ModelicaWriter.java
org.simantics.sysdyn/src/org/simantics/sysdyn/representation/Module.java
org.simantics.sysdyn/src/org/simantics/sysdyn/representation/ModuleType.java

index 25d7090baf18db830f42b8ae2aa073c78deea8ac..ff352c72a8343a4540d487cd3ca7ab8dc40c6591 100644 (file)
@@ -113,8 +113,8 @@ public abstract class NameValidator {
                // Function, FunctionLibrary, and SharedFunctionLibrary are not\r
                // allowed to have whitespace.\r
                if (graph.isInstanceOf(resource, sr.Variable)\r
-//                                     || graph.isInstanceOf(resource, sr.Module)\r
-//                                     || graph.isInstanceOf(resource, sr.ModuleType)\r
+                                       || graph.isInstanceOf(resource, sr.Module)\r
+                                       || graph.isInheritedFrom(resource, sr.ModuleSymbol)\r
                                        || graph.isInstanceOf(resource, sr.Enumeration)\r
                                        || graph.isInstanceOf(resource, sr.EnumerationIndex)\r
                                        || graph.isInstanceOf(resource, sheet.Spreadsheet)\r
index ab040550c3ac762df896a04c2aa97183e7b9c8e1..0d4a811a69c992bbfb6441c1bc2175b3116700e1 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Copyright (c) 2010, 2013 Association for Decentralized Information Management in\r
+ * Copyright (c) 2010, 2013, 2014 Association for Decentralized Information Management in\r
  * Industry THTH ry.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the terms of the Eclipse Public License v1.0\r
@@ -66,7 +66,7 @@ import org.simantics.sysdyn.solver.SolverSettings.SolverType;
 \r
 /**\r
  * Maintains a Java representation of system dynamic model.\r
- * @author Hannu Niemistö, Teemu Lempinen\r
+ * @author Hannu Niemistö, Teemu Lempinen, Tuomas Miettinen\r
  */\r
 public class SysdynModel implements IModel, IMappingListener, VariableSubscriptionManager {\r
 \r
@@ -493,7 +493,7 @@ public class SysdynModel implements IModel, IMappingListener, VariableSubscripti
             if (element instanceof Module) {\r
                 Module module = (Module) element;\r
                 Configuration conf = module.getType().getConfiguration();\r
-                String prfx = prefix + module.getName() + ".";\r
+                String prfx = prefix + module.getModelicaName() + ".";\r
                 inits.putAll(getInits(conf, prfx));\r
                 for(ParameterOverride po : module.getParameterOverrides()) {\r
                        inits.put(prfx + po.getVariable().getName(), po.getExpression());\r
index f2c0a1b7d54bddc6134c1f3ad3c25220f720896e..29b806a3980c7e32ecf8730f8a8cdd16ab0bea7f 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Copyright (c) 2007, 2012 Association for Decentralized Information Management in\r
+ * Copyright (c) 2007, 2012, 2014 Association for Decentralized Information Management in\r
  * Industry THTH ry.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the terms of the Eclipse Public License v1.0\r
@@ -212,11 +212,11 @@ public class ModelicaWriter {
                                // Module\r
                                Module m = (Module)element; \r
                                modules.add(m);\r
-                               moduleInputs.put(m.getName(), new ArrayList<Input>());\r
+                               moduleInputs.put(m.getModelicaName(), new ArrayList<Input>());\r
                                for(IElement e : m.getType().getConfiguration().getElements())\r
                                        // Inputs inside the module\r
                                        if(e instanceof Input && !((Input)e).isHeadOfDependency()) {\r
-                                               moduleInputs.get(m.getName()).add((Input)e);\r
+                                               moduleInputs.get(m.getModelicaName()).add((Input)e);\r
                                        }\r
                        } else if (element instanceof Input) {\r
                                // Input variables\r
@@ -245,7 +245,7 @@ public class ModelicaWriter {
                ModuleType mt = configuration.getModuleType();\r
 \r
                // className == null, if this is a model configuration. model configuration start and end are written in ModelicaWriter.write\r
-               String className = mt != null ? (mt.getName().replace(" ", "")) : null;\r
+               String className = mt != null ? (mt.getModelicaName()) : null;\r
 \r
                if(className != null)\r
                        b.append("class "+className+"\n");\r
@@ -335,8 +335,8 @@ public class ModelicaWriter {
                        Module module = (Module)dependency.getHead();\r
                        Input reference = (Input)dependency.refersTo();\r
                        if(reference != null && reference.getName() != null && (reference.getVariability() == null || reference.getVariability().isEmpty())) {\r
-                               b.append("    " + module.getName() + "." + reference.getModelicaName() + " = " + variable.getModelicaName() + ";\n");\r
-                               moduleInputs.get(module.getName()).remove(reference);\r
+                               b.append("    " + module.getModelicaName() + "." + reference.getModelicaName() + " = " + variable.getModelicaName() + ";\n");\r
+                               moduleInputs.get(module.getModelicaName()).remove(reference);\r
                        }\r
                }\r
 \r
@@ -352,7 +352,7 @@ public class ModelicaWriter {
                        if(configuration.isGameConfiguration() && !modules.isEmpty()) {\r
                                b.append("// Time values for module\n");\r
                                for(Module m : modules) {\r
-                                       b.append("    " + m.getName() + ".time = time;\n");\r
+                                       b.append("    " + m.getModelicaName() + ".time = time;\n");\r
                                }\r
                        }\r
                }\r
@@ -391,7 +391,7 @@ public class ModelicaWriter {
                        String expression;\r
                        // If reference exists, use reference name. Otherwise, use default value.\r
                        if(reference != null && reference.getName() != null)\r
-                               expression = module.getName() + "." + reference.getModelicaName() + ";\n";\r
+                               expression = module.getModelicaName() + "." + reference.getModelicaName() + ";\n";\r
 \r
                        else\r
                                expression = input.getDefaultInputValue() + ";\n";\r
index 3938f20051a41dd25abb5ddb556e5606e6c1bf11..e8908c9bb1642da3ce9a04d42cbb62899c65b41b 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Copyright (c) 2010, 2012 Association for Decentralized Information Management in\r
+ * Copyright (c) 2010, 2012, 2014 Association for Decentralized Information Management in\r
  * Industry THTH ry.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the terms of the Eclipse Public License v1.0\r
@@ -58,6 +58,17 @@ public class Module implements IElement {
        public String getName() {\r
                return name;\r
        }\r
+       \r
+    /**\r
+     * Get Modelica compliant name\r
+     * @return The name of this variable with spaces (' ') replaced with \r
+     * underscore characters ('_')\r
+     */\r
+    public String getModelicaName() {\r
+       if (this.name == null)\r
+               return null;\r
+        return this.name.replace(' ', '_');\r
+    }\r
 \r
        public ModuleType getType() {\r
                return type;\r
@@ -114,9 +125,9 @@ public class Module implements IElement {
                }\r
 \r
                sb.append("    ");\r
-               sb.append(getType().getName());\r
+               sb.append(getType().getModelicaName());\r
                sb.append(" ");\r
-               sb.append(getName());\r
+               sb.append(getModelicaName());\r
                sb.append(redeclarations.toString()); // possible redeclarations\r
                sb.append(";\n");\r
                return sb.toString();\r
index bf7b84a9ff8a5617d04be25b43490f7c1b0b99a3..1dbabb0c94c7e08cdb6d12204ba9ac2db76ba2f5 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Copyright (c) 2010, 2012 Association for Decentralized Information Management in\r
+ * Copyright (c) 2010, 2012, 2014 Association for Decentralized Information Management in\r
  * Industry THTH ry.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the terms of the Eclipse Public License v1.0\r
@@ -22,6 +22,7 @@ import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;
  * Representation of a module type\r
  * \r
  * @author Teemu Lempinen\r
+ * @author Tuomas Miettinen\r
  *\r
  */\r
 @GraphType(StructuralResource2.URIs.ComponentType)\r
@@ -35,7 +36,18 @@ public class ModuleType implements IElement {
     \r
     @RelatedElement(Layer0.URIs.PartOf)\r
     protected Object parent;\r
-\r
+       \r
+    /**\r
+     * Get Modelica compliant name\r
+     * @return The name of this variable with spaces (' ') replaced with \r
+     * underscore characters ('_')\r
+     */\r
+    public String getModelicaName() {\r
+       if (this.name == null)\r
+               return null;\r
+        return this.name.replace(' ', '_');\r
+    }\r
+    \r
     public String getName() {\r
        return name;\r
     }\r