]> gerrit.simantics Code Review - simantics/district.git/blobdiff - 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
diff --git a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportModel.java b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportModel.java
new file mode 100644 (file)
index 0000000..50c427c
--- /dev/null
@@ -0,0 +1,73 @@
+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