]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports/src/org/simantics/district/imports/DistrictImportUtils.java
Updates to Simantics district CSV import
[simantics/district.git] / org.simantics.district.imports / src / org / simantics / district / imports / DistrictImportUtils.java
index 1ad5b9a9487c0667d91a553cd6ecc461b1851156..f123855dfc47e32be31d2268a05e6d3401ca33f4 100644 (file)
@@ -4,10 +4,13 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVParser;
@@ -17,8 +20,7 @@ import org.simantics.db.Resource;
 public class DistrictImportUtils {
 
     private DistrictImportUtils() { }
-    
-    
+
     public static Resource importCSVAsLayer(Path csvFile) throws IOException {
         
         try (CSVParser parser = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(Files.newBufferedReader(csvFile))) {
@@ -42,8 +44,8 @@ public class DistrictImportUtils {
 
     public static Map<String, Character> getSupportedCSVDelimiterFormats() {
         Map<String, Character> delimiters = new HashMap<>();
-        delimiters.put("COMMA", ',');
-        delimiters.put("SEMICOMMA", ';');
+        delimiters.put("Comma", ',');
+        delimiters.put("Semicolon", ';');
         return delimiters;
     }
 
@@ -172,4 +174,20 @@ public class DistrictImportUtils {
         }
     }
 
+    public static Collection<String> readDistinctValuesOfColumn(Path source, char delim, int mappingIndex) throws IOException {
+        Set<String> results = new HashSet<>();
+        CSVFormat format = CSVFormat.newFormat(delim);
+        try (CSVParser parser = format.parse(Files.newBufferedReader(source))) {
+            Iterator<CSVRecord> records = parser.iterator();
+            if (records.hasNext())
+                records.next();
+            while (records.hasNext()) {
+                CSVRecord row = records.next();
+                String value = row.get(mappingIndex);
+                results.add(value);
+            }
+        }
+        return results;
+    }
+
 }