]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetLines.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetLines.java
diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetLines.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetLines.java
deleted file mode 100644 (file)
index b3d6f09..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-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;
-    }
-       
-}