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