X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Ftechtype%2FTechTypeUtils.java;fp=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Ftechtype%2FTechTypeUtils.java;h=92eef4fe7f3462ab9afc25a1dd5d43e4808ff3de;hb=d9792f886b6c6446d7eeac7c882a8271c0a35f55;hp=66280d12cdd90624a796caef25bb62177f5d5865;hpb=55be0da74875c6e9e9b96bc86a6773b87889036e;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/techtype/TechTypeUtils.java b/org.simantics.district.network/src/org/simantics/district/network/techtype/TechTypeUtils.java index 66280d12..92eef4fe 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/techtype/TechTypeUtils.java +++ b/org.simantics.district.network/src/org/simantics/district/network/techtype/TechTypeUtils.java @@ -1,9 +1,14 @@ package org.simantics.district.network.techtype; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; import org.simantics.Simantics; import org.simantics.databoard.Bindings; @@ -30,6 +35,7 @@ import org.simantics.district.network.techtype.requests.PossibleTechTypeItem; import org.simantics.district.network.techtype.requests.PossibleTechTypeTable; import org.simantics.district.network.techtype.requests.TechTypeTableData; import org.simantics.district.network.techtype.requests.TechTypeTableKeyName; +import org.simantics.district.network.techtype.requests.WriteTechTypeTable; import org.simantics.layer0.Layer0; import org.simantics.scl.runtime.SCLContext; import org.simantics.structural.stubs.StructuralResource2; @@ -42,6 +48,31 @@ public class TechTypeUtils { public static String DEFAULT_KEY_NAME = "pipeCode"; + /** + * Load a tech type table from a CSV file and write it in the active model. + * + * @param componentType The component type that the tech type table is associated with + * @param filePath A path to a CSV file + * @throws DatabaseException + * @throws IOException + */ + public static void loadTechTypeTable(Resource componentType, String filePath) throws DatabaseException, IOException { + String data; + try { + data = Files.lines(Paths.get(filePath), Charset.defaultCharset()).collect(Collectors.joining("\n")); + } catch (IOException e) { + LOGGER.error("Failed to read contents of file '{}' as {}", filePath, Charset.defaultCharset(), e); + return; + } + + Simantics.getSession().syncRequest(new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException { + graph.syncRequest(new WriteTechTypeTable(componentType, data)); + } + }); + } + /** * Execute a cached query for a possible tech type table item in a table with a given item key. * @@ -100,7 +131,7 @@ public class TechTypeUtils { } /** - * Reset all components that address the given tech type table to the table values. + * Reset all diagram elements to tech type table values. * * @param table A tech type table * @throws DatabaseException