--- /dev/null
+package org.simantics.district.imports.ui;\r
+\r
+import java.io.IOException;\r
+import java.nio.file.Path;\r
+import java.util.Collections;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.simantics.district.imports.DistrictImportUtils;\r
+import org.simantics.district.imports.DistrictImportUtils.CSVHeader;\r
+\r
+public class CSVImportModel {\r
+\r
+ private Path source;\r
+ private char delimiter;\r
+ private boolean read;\r
+ private Map<String, Character> delimiters;\r
+\r
+ public CSVImportModel() {\r
+ delimiters = DistrictImportUtils.getSupportedCSVDelimiterFormats();\r
+ }\r
+ \r
+ public void setSource(Path source) {\r
+ this.source = source;\r
+ }\r
+\r
+ public void setDelimiter(char delimiter) {\r
+ this.delimiter = delimiter;\r
+ }\r
+\r
+ public void setReadFirstAsHeader(boolean read) {\r
+ this.read = read;\r
+ }\r
+\r
+ public Path getSource() {\r
+ return source;\r
+ }\r
+\r
+ public Map<CSVHeader, List<String>> getHeaderAndRows(int amount) throws IOException {\r
+ if (source != null)\r
+ return DistrictImportUtils.readCSVHeaderAndRows(source, delimiter, read, amount);\r
+ else\r
+ return Collections.emptyMap();\r
+ }\r
+ \r
+ public Map<String, Integer> getHeader() throws IOException {\r
+ Map<String, Integer> header = null;\r
+ if (source != null)\r
+ header = DistrictImportUtils.readCSVHeader(source, delimiter, read);\r
+ if (header == null)\r
+ header = Collections.emptyMap();\r
+ return header;\r
+ }\r
+\r
+ public boolean getReadFirstAsHeader() {\r
+ return read;\r
+ }\r
+\r
+ public String[] getDelimiterFormats() {\r
+ return delimiters.keySet().toArray(new String[delimiters.size()]);\r
+ }\r
+\r
+ public void setDelimiterByLabel(String item) {\r
+ setDelimiter(delimiters.get(item));\r
+ }\r
+\r
+ public List<Map<String, String>> readRows(int amount) throws IOException {\r
+ if (source != null)\r
+ return DistrictImportUtils.readRows(source, delimiter, read, amount);\r
+ else\r
+ return Collections.emptyList();\r
+ }\r
+}\r