]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.excel.poi/src/org/simantics/excel/poi/parser/CellStringArrayDataResolver.java
4d6ce43ac9db769e1ac26a29a224ac743cf4f48d
[simantics/interop.git] / org.simantics.excel.poi / src / org / simantics / excel / poi / parser / CellStringArrayDataResolver.java
1 package org.simantics.excel.poi.parser;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import org.apache.poi.ss.usermodel.Row;\r
7 \r
8 public class CellStringArrayDataResolver extends CellDataResolverBase<String[]>{\r
9         \r
10         int index[];\r
11         boolean all = false;\r
12         \r
13         public CellStringArrayDataResolver(int... index) {\r
14                 this.index = index;\r
15         }\r
16         \r
17     public CellStringArrayDataResolver(List<Integer> index) {\r
18                 this.index = new int[index.size()];\r
19                 for (int i = 0; i < index.size(); i++) {\r
20                         this.index[i] = index.get(i);\r
21                 }\r
22         }\r
23     \r
24     /**\r
25      * If resolver is parameterized with one index, return all values from all columns from the index. Default false.\r
26      * @param all\r
27      */\r
28     public CellStringArrayDataResolver setAll(boolean all) {\r
29                 this.all = all;\r
30                 return this;\r
31         }\r
32         \r
33         @Override\r
34         public String[] getValue(Row row) {\r
35                 if (row == null)\r
36                         return null;\r
37                 if (index.length > 1 || !all) {\r
38                         String data[] = new String[index.length];\r
39                         for (int i = 0; i < data.length; i++) {\r
40                                 data[i] = getCellStringValue(getCell(row, index[i]));\r
41                         }\r
42                         return data;\r
43                 } else {\r
44                         List<String> data = new ArrayList<String>();\r
45                         int i = index[0];\r
46                         while (true) {\r
47                                 String value = getCellStringValue(getCell(row, i));\r
48                                 if (value != null && value.length() > 0) {\r
49                                         data.add(value);\r
50                                         i++;\r
51                                 } else {\r
52                                         break;\r
53                                 }\r
54                         }\r
55                         return data.toArray(new String[data.size()]);\r
56                 }\r
57         }\r
58 \r
59 }\r