]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.excel.poi/src/org/simantics/excel/poi/parser/CellStringArrayDataResolver.java
Excel parsing interface
[simantics/interop.git] / org.simantics.excel.poi / src / org / simantics / excel / poi / parser / CellStringArrayDataResolver.java
diff --git a/org.simantics.excel.poi/src/org/simantics/excel/poi/parser/CellStringArrayDataResolver.java b/org.simantics.excel.poi/src/org/simantics/excel/poi/parser/CellStringArrayDataResolver.java
new file mode 100644 (file)
index 0000000..4d6ce43
--- /dev/null
@@ -0,0 +1,59 @@
+package org.simantics.excel.poi.parser;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.poi.ss.usermodel.Row;\r
+\r
+public class CellStringArrayDataResolver extends CellDataResolverBase<String[]>{\r
+       \r
+       int index[];\r
+       boolean all = false;\r
+       \r
+       public CellStringArrayDataResolver(int... index) {\r
+               this.index = index;\r
+       }\r
+       \r
+    public CellStringArrayDataResolver(List<Integer> index) {\r
+               this.index = new int[index.size()];\r
+               for (int i = 0; i < index.size(); i++) {\r
+                       this.index[i] = index.get(i);\r
+               }\r
+       }\r
+    \r
+    /**\r
+     * If resolver is parameterized with one index, return all values from all columns from the index. Default false.\r
+     * @param all\r
+     */\r
+    public CellStringArrayDataResolver setAll(boolean all) {\r
+               this.all = all;\r
+               return this;\r
+       }\r
+       \r
+       @Override\r
+       public String[] getValue(Row row) {\r
+               if (row == null)\r
+                       return null;\r
+               if (index.length > 1 || !all) {\r
+                       String data[] = new String[index.length];\r
+                       for (int i = 0; i < data.length; i++) {\r
+                               data[i] = getCellStringValue(getCell(row, index[i]));\r
+                       }\r
+                       return data;\r
+               } else {\r
+                       List<String> data = new ArrayList<String>();\r
+                       int i = index[0];\r
+                       while (true) {\r
+                               String value = getCellStringValue(getCell(row, i));\r
+                               if (value != null && value.length() > 0) {\r
+                                       data.add(value);\r
+                                       i++;\r
+                               } else {\r
+                                       break;\r
+                               }\r
+                       }\r
+                       return data.toArray(new String[data.size()]);\r
+               }\r
+       }\r
+\r
+}\r