]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportModel.java
Adding basic import utilities - WIP!
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / CSVImportModel.java
1 package org.simantics.district.imports.ui;\r
2 \r
3 import java.io.IOException;\r
4 import java.nio.file.Path;\r
5 import java.util.Collections;\r
6 import java.util.List;\r
7 import java.util.Map;\r
8 \r
9 import org.simantics.district.imports.DistrictImportUtils;\r
10 import org.simantics.district.imports.DistrictImportUtils.CSVHeader;\r
11 \r
12 public class CSVImportModel {\r
13 \r
14     private Path source;\r
15     private char delimiter;\r
16     private boolean read;\r
17     private Map<String, Character> delimiters;\r
18 \r
19     public CSVImportModel() {\r
20         delimiters = DistrictImportUtils.getSupportedCSVDelimiterFormats();\r
21     }\r
22     \r
23     public void setSource(Path source) {\r
24         this.source = source;\r
25     }\r
26 \r
27     public void setDelimiter(char delimiter) {\r
28         this.delimiter = delimiter;\r
29     }\r
30 \r
31     public void setReadFirstAsHeader(boolean read) {\r
32         this.read = read;\r
33     }\r
34 \r
35     public Path getSource() {\r
36         return source;\r
37     }\r
38 \r
39     public Map<CSVHeader, List<String>> getHeaderAndRows(int amount) throws IOException {\r
40         if (source != null)\r
41             return DistrictImportUtils.readCSVHeaderAndRows(source, delimiter, read, amount);\r
42         else\r
43             return Collections.emptyMap();\r
44     }\r
45     \r
46     public Map<String, Integer> getHeader() throws IOException {\r
47         Map<String, Integer> header = null;\r
48         if (source != null)\r
49             header = DistrictImportUtils.readCSVHeader(source, delimiter, read);\r
50         if (header == null)\r
51             header = Collections.emptyMap();\r
52         return header;\r
53     }\r
54 \r
55     public boolean getReadFirstAsHeader() {\r
56         return read;\r
57     }\r
58 \r
59     public String[] getDelimiterFormats() {\r
60         return delimiters.keySet().toArray(new String[delimiters.size()]);\r
61     }\r
62 \r
63     public void setDelimiterByLabel(String item) {\r
64         setDelimiter(delimiters.get(item));\r
65     }\r
66 \r
67     public List<Map<String, String>> readRows(int amount) throws IOException {\r
68         if (source != null)\r
69             return DistrictImportUtils.readRows(source, delimiter, read, amount);\r
70         else\r
71             return Collections.emptyList();\r
72     }\r
73 }\r