]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetLines.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetLines.java
index 98c9007bdc804cbba0c53d6f1281bb175ee4c067..b3d6f0973f4ac1e9adc1d8c1d51341a8007a611e 100644 (file)
-package org.simantics.spreadsheet.graph;\r
-\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.Map;\r
-import java.util.Optional;\r
-\r
-import org.simantics.spreadsheet.resource.SpreadsheetResource;\r
-\r
-import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap;\r
-\r
-public class SpreadsheetLines implements SpreadsheetElement<SpreadsheetLine, SpreadsheetEngine>, SheetNode {\r
-\r
-       private static final long serialVersionUID = -3615335969248723486L;\r
-       \r
-       private final int id;\r
-       private SpreadsheetEngine parent;\r
-       private String name;\r
-       public Int2ObjectAVLTreeMap<SpreadsheetLines> nodes = new Int2ObjectAVLTreeMap<SpreadsheetLines>();\r
-       public Int2ObjectAVLTreeMap<SpreadsheetLine> lines = new Int2ObjectAVLTreeMap<SpreadsheetLine>();\r
-       public int[] keys;\r
-\r
-       public SpreadsheetLines(SpreadsheetEngine parent, String name) {\r
-               this.parent = parent;\r
-               this.name = name;\r
-               id = getEngine().getBook().getNewId(this);\r
-       }\r
-\r
-       public SpreadsheetEngine getEngine() {\r
-               return parent;\r
-       }\r
-\r
-       public int getId() {\r
-               return id;\r
-       }\r
-       \r
-       @Override\r
-       public String getName() {\r
-               return name;\r
-       }\r
-\r
-       @Override\r
-       public Map getChildren() {\r
-               Int2ObjectAVLTreeMap result = new Int2ObjectAVLTreeMap();\r
-               result.putAll(nodes);\r
-               result.putAll(lines);\r
-               return result;\r
-       }\r
-\r
-       @Override\r
-       public Map getProperties() {\r
-               return Collections.singletonMap("typeURI", new SpreadsheetTypeNode(SpreadsheetResource.URIs.Lines));\r
-       } \r
-       \r
-       Object resolve(String[] parts, int index) {\r
-               \r
-               String part = parts[index];\r
-               if(part.charAt(0) == 'R') {\r
-                       int indx = Integer.parseInt(part.substring(3));\r
-                       SpreadsheetLine line = lines.get(-indx);\r
-                       if(line != null) {\r
-                               if(index == parts.length-1) return line;\r
-                               else return line.resolve(parts, index+1);\r
-                       }\r
-               } else {\r
-                       int indx = Integer.parseInt(part);\r
-                       SpreadsheetLines node = nodes.get(indx);\r
-                       if(node != null) {\r
-                               if(index == parts.length-1) return node;\r
-                               else return node.resolve(parts, index+1);\r
-                       }\r
-               }\r
-               \r
-               return null;\r
-\r
-       }\r
-\r
-       public Object ensureSubprocess(String[] path, int index) {\r
-               \r
-               String name = path[index];\r
-\r
-               int i = Integer.parseInt(name);\r
-               SpreadsheetLines line = nodes.get(i);\r
-               if(line == null) {\r
-                       line = new SpreadsheetLines(parent, "" + i);\r
-                       nodes.put(i, line);\r
-               }\r
-\r
-               if(index == path.length - 1) {\r
-                       return line;\r
-               } else {\r
-                       return line.ensureSubprocess(path, index+1);\r
-               }\r
-               \r
-       }\r
-       \r
-       public void setKeys(int[] keys) {\r
-               this.keys = keys;\r
-       }\r
-       \r
-       @Override\r
-       public void accept(SpreadsheetVisitor v) {\r
-               v.visit(this);\r
-       }\r
-\r
-       public String getPath() {\r
-                       return "/" + parent.getName() + "/" + parent.lines.getName() + "/" + getName();\r
-       }\r
-\r
-       private int getKey(int index) {\r
-               return keys[2*index+1];\r
-       }\r
-\r
-       private int getChild(int index) {\r
-               return keys[2*index];\r
-       }\r
-\r
-       /*\r
-        *  [(child,key),...,key)\r
-        * \r
-        */\r
-       public SpreadsheetLine getLine(int k) {\r
-               \r
-               int i=1;\r
-               int n = (keys.length - 1) / 2;\r
-               \r
-               while(i <= n && k > getKey(i-1)) i++;\r
-               \r
-               if(i <= n && k == getKey(i-1)) {\r
-                       return lines.get(-k);\r
-               }\r
-\r
-               int nodeName = getChild(i-1);\r
-               SpreadsheetLines node = nodes.get(nodeName);\r
-               if(node == null) return null;\r
-               return node.getLine(k);\r
-               \r
-       }\r
-       \r
-       public int getMaxRow() {\r
-               // if keys == null then this is the root of BTree which has only one child \r
-               if (keys == null) {\r
-                       int maxRow = 0;\r
-                       for (SpreadsheetLines node : nodes.values()) {\r
-                               int row = node.getMaxRow();\r
-                               if (row > maxRow)\r
-                                       maxRow = row;\r
-                       }\r
-                       return maxRow;\r
-               }\r
-               int largestChild = keys[keys.length-1]; \r
-               if(largestChild > 0) {\r
-                       SpreadsheetLines child = nodes.get(largestChild);\r
-                       return child.getMaxRow();\r
-               } else {\r
-                       return keys[keys.length-2];\r
-               }\r
-       }\r
-\r
-    @Override\r
-    public Optional<SpreadsheetEngine> getParent() {\r
-        return Optional.of(parent);\r
-    }\r
-\r
-    @Override\r
-    public Collection<SpreadsheetLine> getSpreadsheetChildren() {\r
-        return lines.values();\r
-    }\r
-\r
-    @Override\r
-    public void remove(SpreadsheetLine child) {\r
-        lines.remove(-child.row);\r
-    }\r
-\r
-    @Override\r
-    public int hashCode() {\r
-        final int prime = 31;\r
-        int result = 1;\r
-        result = prime * result + ((name == null) ? 0 : name.hashCode());\r
-        result = prime * result + ((parent == null) ? 0 : parent.hashCode());\r
-        return result;\r
-    }\r
-\r
-    @Override\r
-    public boolean equals(Object obj) {\r
-        if (this == obj)\r
-            return true;\r
-        if (obj == null)\r
-            return false;\r
-        if (getClass() != obj.getClass())\r
-            return false;\r
-        SpreadsheetLines other = (SpreadsheetLines) obj;\r
-        if (name == null) {\r
-            if (other.name != null)\r
-                return false;\r
-        } else if (!name.equals(other.name))\r
-            return false;\r
-        if (parent == null) {\r
-            if (other.parent != null)\r
-                return false;\r
-        } else if (!parent.equals(other.parent))\r
-            return false;\r
-        return true;\r
-    }\r
-       \r
-}\r
+package org.simantics.spreadsheet.graph;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
+
+import org.simantics.spreadsheet.resource.SpreadsheetResource;
+
+import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap;
+
+public class SpreadsheetLines implements SpreadsheetElement<SpreadsheetLine, SpreadsheetEngine>, SheetNode {
+
+       private static final long serialVersionUID = -3615335969248723486L;
+       
+       private final int id;
+       private SpreadsheetEngine parent;
+       private String name;
+       public Int2ObjectAVLTreeMap<SpreadsheetLines> nodes = new Int2ObjectAVLTreeMap<SpreadsheetLines>();
+       public Int2ObjectAVLTreeMap<SpreadsheetLine> lines = new Int2ObjectAVLTreeMap<SpreadsheetLine>();
+       public int[] keys;
+
+       public SpreadsheetLines(SpreadsheetEngine parent, String name) {
+               this.parent = parent;
+               this.name = name;
+               id = getEngine().getBook().getNewId(this);
+       }
+
+       public SpreadsheetEngine getEngine() {
+               return parent;
+       }
+
+       public int getId() {
+               return id;
+       }
+       
+       @Override
+       public String getName() {
+               return name;
+       }
+
+       @Override
+       public Map getChildren() {
+               Int2ObjectAVLTreeMap result = new Int2ObjectAVLTreeMap();
+               result.putAll(nodes);
+               result.putAll(lines);
+               return result;
+       }
+
+       @Override
+       public Map getProperties() {
+               return Collections.singletonMap("typeURI", new SpreadsheetTypeNode(SpreadsheetResource.URIs.Lines));
+       } 
+       
+       Object resolve(String[] parts, int index) {
+               
+               String part = parts[index];
+               if(part.charAt(0) == 'R') {
+                       int indx = Integer.parseInt(part.substring(3));
+                       SpreadsheetLine line = lines.get(-indx);
+                       if(line != null) {
+                               if(index == parts.length-1) return line;
+                               else return line.resolve(parts, index+1);
+                       }
+               } else {
+                       int indx = Integer.parseInt(part);
+                       SpreadsheetLines node = nodes.get(indx);
+                       if(node != null) {
+                               if(index == parts.length-1) return node;
+                               else return node.resolve(parts, index+1);
+                       }
+               }
+               
+               return null;
+
+       }
+
+       public Object ensureSubprocess(String[] path, int index) {
+               
+               String name = path[index];
+
+               int i = Integer.parseInt(name);
+               SpreadsheetLines line = nodes.get(i);
+               if(line == null) {
+                       line = new SpreadsheetLines(parent, "" + i);
+                       nodes.put(i, line);
+               }
+
+               if(index == path.length - 1) {
+                       return line;
+               } else {
+                       return line.ensureSubprocess(path, index+1);
+               }
+               
+       }
+       
+       public void setKeys(int[] keys) {
+               this.keys = keys;
+       }
+       
+       @Override
+       public void accept(SpreadsheetVisitor v) {
+               v.visit(this);
+       }
+
+       public String getPath() {
+                       return "/" + parent.getName() + "/" + parent.lines.getName() + "/" + getName();
+       }
+
+       private int getKey(int index) {
+               return keys[2*index+1];
+       }
+
+       private int getChild(int index) {
+               return keys[2*index];
+       }
+
+       /*
+        *  [(child,key),...,key)
+        * 
+        */
+       public SpreadsheetLine getLine(int k) {
+               
+               int i=1;
+               int n = (keys.length - 1) / 2;
+               
+               while(i <= n && k > getKey(i-1)) i++;
+               
+               if(i <= n && k == getKey(i-1)) {
+                       return lines.get(-k);
+               }
+
+               int nodeName = getChild(i-1);
+               SpreadsheetLines node = nodes.get(nodeName);
+               if(node == null) return null;
+               return node.getLine(k);
+               
+       }
+       
+       public int getMaxRow() {
+               // if keys == null then this is the root of BTree which has only one child 
+               if (keys == null) {
+                       int maxRow = 0;
+                       for (SpreadsheetLines node : nodes.values()) {
+                               int row = node.getMaxRow();
+                               if (row > maxRow)
+                                       maxRow = row;
+                       }
+                       return maxRow;
+               }
+               int largestChild = keys[keys.length-1]; 
+               if(largestChild > 0) {
+                       SpreadsheetLines child = nodes.get(largestChild);
+                       return child.getMaxRow();
+               } else {
+                       return keys[keys.length-2];
+               }
+       }
+
+    @Override
+    public Optional<SpreadsheetEngine> getParent() {
+        return Optional.of(parent);
+    }
+
+    @Override
+    public Collection<SpreadsheetLine> getSpreadsheetChildren() {
+        return lines.values();
+    }
+
+    @Override
+    public void remove(SpreadsheetLine child) {
+        lines.remove(-child.row);
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((parent == null) ? 0 : parent.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        SpreadsheetLines other = (SpreadsheetLines) obj;
+        if (name == null) {
+            if (other.name != null)
+                return false;
+        } else if (!name.equals(other.name))
+            return false;
+        if (parent == null) {
+            if (other.parent != null)
+                return false;
+        } else if (!parent.equals(other.parent))
+            return false;
+        return true;
+    }
+       
+}