]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports/src/org/simantics/district/imports/DistrictImportUtils.java
Enhancements to district functionalities and code
[simantics/district.git] / org.simantics.district.imports / src / org / simantics / district / imports / DistrictImportUtils.java
index 1ad5b9a9487c0667d91a553cd6ecc461b1851156..100c307e35d67e46e5296038eb05b26a786b2e7f 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))) {
@@ -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;
+    }
+
 }