]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetLine.java
Changing existing log4j logging to use slf4j
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetLine.java
1 package org.simantics.spreadsheet.graph;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.HashMap;\r
5 import java.util.List;\r
6 import java.util.Map;\r
7 import java.util.Optional;\r
8 \r
9 import org.simantics.spreadsheet.Range;\r
10 import org.simantics.spreadsheet.resource.SpreadsheetResource;\r
11 import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
12 \r
13 import it.unimi.dsi.fastutil.objects.ObjectArrayList;\r
14 \r
15 public class SpreadsheetLine implements SpreadsheetElement<SpreadsheetCell, SpreadsheetLines>, SheetNode {\r
16 \r
17         private static final long serialVersionUID = -304574098117404663L;\r
18         \r
19         final private SpreadsheetLines parent;\r
20         final public int row;\r
21         int id;\r
22         \r
23         public ObjectArrayList<SpreadsheetCell> cells = new ObjectArrayList<>();\r
24         \r
25         public SpreadsheetLine(SpreadsheetLines parent, int row) {\r
26                 this.parent = parent;\r
27                 this.row = row;\r
28                 this.id = getEngine().getBook().getNewId(this);\r
29 //              getEngine().registerRow(row, this);\r
30         }\r
31         \r
32         public int getId() {\r
33                 return id;\r
34         }\r
35         \r
36         public SpreadsheetEngine getEngine() {\r
37 //              if(parent instanceof SpreadsheetEngine)\r
38 //                  return (SpreadsheetEngine)parent;\r
39                 return ((SpreadsheetLines)parent).getEngine();\r
40         }\r
41 \r
42         @Override\r
43         public String getName() {\r
44                 return "Row"+row;\r
45         }\r
46 \r
47         @Override\r
48         public Map getChildren() {\r
49                 String rowName = ""+row;\r
50                 Map<String,SpreadsheetCell> result = new HashMap<>();\r
51                 for(int i=0;i<cells.size();i++) {\r
52                         SpreadsheetCell cell = cells.get(i);\r
53                         if(SpreadsheetCell.EMPTY == cell) continue;\r
54                         String name = "Row"+SpreadsheetUtils.columnName(i) + rowName;\r
55                         result.put(name, cell);\r
56                 }\r
57                 return result;\r
58         }\r
59 \r
60         @Override\r
61         public Map getProperties() {\r
62                 return Collections.singletonMap("typeURI", new SpreadsheetTypeNode(SpreadsheetResource.URIs.Line));\r
63         }\r
64         \r
65         Object resolve(String[] parts, int index) {\r
66                 \r
67                 if(index == parts.length) return this;\r
68                 \r
69                 Range r = SpreadsheetUtils.decodeCellAbsolute(parts[index]);\r
70                 return cells.get(r.startColumn);\r
71                 \r
72         }\r
73 \r
74         public void accept(SpreadsheetVisitor v) {\r
75                 v.visit(this);\r
76         }\r
77         \r
78         public String getPath() {\r
79                 return ((SpreadsheetLines)parent).getPath() + "/" + getName();\r
80         }\r
81 \r
82     @Override\r
83     public Optional<SpreadsheetLines> getParent() {\r
84         return Optional.of(parent);\r
85     }\r
86 \r
87     @Override\r
88     public List<SpreadsheetCell> getSpreadsheetChildren() {\r
89         return cells;\r
90     }\r
91 \r
92     @Override\r
93     public void remove(SpreadsheetCell child) {\r
94         \r
95     }\r
96 \r
97     @Override\r
98     public int hashCode() {\r
99         final int prime = 31;\r
100         int result = 1;\r
101         result = prime * result + ((parent == null) ? 0 : parent.hashCode());\r
102         result = prime * result + row;\r
103         return result;\r
104     }\r
105 \r
106     @Override\r
107     public boolean equals(Object obj) {\r
108         if (this == obj)\r
109             return true;\r
110         if (obj == null)\r
111             return false;\r
112         if (getClass() != obj.getClass())\r
113             return false;\r
114         SpreadsheetLine other = (SpreadsheetLine) obj;\r
115         if (parent == null) {\r
116             if (other.parent != null)\r
117                 return false;\r
118         } else if (!parent.equals(other.parent))\r
119             return false;\r
120         if (row != other.row)\r
121             return false;\r
122         return true;\r
123     }\r
124 \r
125 }\r