--- /dev/null
+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