]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports/src/org/simantics/district/imports/DistrictImportUtils.java
Hide "enabled" column for non-component type tech type tables
[simantics/district.git] / org.simantics.district.imports / src / org / simantics / district / imports / DistrictImportUtils.java
index cad063fd5094fa9d73ad4da5012d65f093c35153..67e07b0cbd792ec3cfdc9a978ee8f14950382745 100644 (file)
@@ -1,6 +1,8 @@
 package org.simantics.district.imports;
 
 import java.io.IOException;
+import java.io.Reader;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
@@ -64,7 +66,7 @@ public class DistrictImportUtils {
     public static Map<String, Integer> readCSVHeader(Path source, CSVFormat format, boolean firstAsHeader) throws IOException {
         if (firstAsHeader)
             format = format.withFirstRecordAsHeader();
-        try (CSVParser parser = format.parse(Files.newBufferedReader(source))) {
+        try (CSVParser parser = format.parse(Files.newBufferedReader(source, Charset.defaultCharset()))) {
             return parser.getHeaderMap();
         }
     }
@@ -105,11 +107,16 @@ public class DistrictImportUtils {
     }
     
     public static void consumeCSV(Path source, char delim, boolean firstAsHeader, Function<CSVRecord, Boolean> consumer) throws IOException {
-        CSVFormat format = CSVFormat.newFormat(delim);
+        consumeCSV(Files.newBufferedReader(source), delim, firstAsHeader, consumer);
+    }
+
+    public static void consumeCSV(Reader reader, char delim, boolean firstAsHeader,
+            Function<CSVRecord, Boolean> consumer) throws IOException {
+        CSVFormat format = CSVFormat.newFormat(delim).withQuote('"');
         if (firstAsHeader) {
             format = format.withFirstRecordAsHeader();
         }
-        try (CSVParser parser = format.parse(Files.newBufferedReader(source))) {
+        try (CSVParser parser = format.parse(reader)) {
             Iterator<CSVRecord> records = parser.iterator();
             while (records.hasNext()) {
                 Boolean cont = consumer.apply(records.next());
@@ -379,6 +386,14 @@ public class DistrictImportUtils {
         int lengthIndex = model.getLengthIndex();
         int detailedGeometryIndex = model.getDetailedGeometryIndex();
         int regionIndex = model.getRegionIndex();
+        int pipeTypeIndex = model.getPipeTypeIndex();
+        int pipeCodeIndex = model.getPipeCodeIndex();
+        int installationYearIndex = model.getInstallationYearIndex();
+        int wallThicknessIndex = model.getWallThicknessIndex();
+        int insulationConductivityIndex = model.getInsulationConductivityIndex();
+        int pipeSizeDNIndex = model.getPipeSizeDNIndex();
+        int roughnessIndex = model.getRoughnessIndex();
+        int structureIndex = model.getStructureIndex();
         
         int mappingColumn = model.getComponentMappingIndex();
         int idColumn = model.getIdIndex();
@@ -472,7 +487,15 @@ public class DistrictImportUtils {
                                     writeValue(graph, row, edgeFlowAreaIndex, edge, DN.Edge_HasFlowArea);
                                     writeValue(graph, row, lengthIndex, edge, DN.Edge_HasLength);
                                     writeStringValue(graph, row, regionIndex, edge, DN.HasRegion);
+                                    writeStringValue(graph, row, pipeTypeIndex, edge, DN.Edge_HasType);
                                     writeDoubleArrayFromString(graph, row, detailedGeometryIndex, edge, DN.Edge_HasGeometry, actualTransform);
+                                    writeStringValue(graph, row, pipeCodeIndex, edge, DN.Edge_HasPipeCode);
+                                    writeIntegerValue(graph, row, installationYearIndex, edge, DN.Edge_HasInstallationYear);
+                                    writeValue(graph, row, wallThicknessIndex, edge, DN.Edge_HasWallThickness);
+                                    writeValue(graph, row, insulationConductivityIndex, edge, DN.Edge_HasInsulationConductivity);
+                                    writeIntegerValue(graph, row, pipeSizeDNIndex, edge, DN.Edge_HasPipeSizeDN);
+                                    writeValue(graph, row, roughnessIndex, edge, DN.Edge_HasRoughness);
+                                    writeStringValue(graph, row, structureIndex, edge, DN.Edge_HasStructure);
                                 }
                             }
                             return true;
@@ -512,6 +535,23 @@ public class DistrictImportUtils {
         }
     }
     
+    private static void writeIntegerValue(WriteGraph graph, CSVRecord row, int index, Resource subject, Resource relation) throws DatabaseException {
+        if (index != -1) {
+            String stringValue = row.get(index);
+            if (!stringValue.isEmpty()) {
+                try {
+                    if (stringValue.startsWith("\"") && stringValue.endsWith("\"")) {
+                        stringValue = stringValue.substring(1, stringValue.length() - 1);
+                    }
+                    graph.claimLiteral(subject, relation, Integer.parseInt(stringValue), Bindings.INTEGER);
+                } catch (NumberFormatException e) {
+                    LOGGER.error("Could not parse {} {} {} {}", row, index, subject, relation, e);
+                    //throw new DatabaseException(e);
+                }
+            }
+        }
+    }
+    
     private static void writeStringValue(WriteGraph graph, CSVRecord row, int index, Resource subject, Resource relation) throws DatabaseException {
         if (index != -1) {
             String stringValue = row.get(index);