X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.graph.compiler%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Fcompiler%2FGraphCompiler.java;h=c1d9609e712b056a2313faebdde51b92a37cb9d6;hp=98852bcefafc4962bc90e3e64ae4b15c1b1549d0;hb=c2ab38c94029486a379c79a7b38604f1c03afa44;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/GraphCompiler.java b/bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/GraphCompiler.java index 98852bcef..c1d9609e7 100644 --- a/bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/GraphCompiler.java +++ b/bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/GraphCompiler.java @@ -11,16 +11,16 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Formatter; import java.util.Locale; +import java.util.TreeMap; import org.simantics.databoard.Bindings; import org.simantics.databoard.Files; import org.simantics.databoard.adapter.AdaptException; +import org.simantics.databoard.binding.Binding; import org.simantics.databoard.binding.error.BindingException; -import org.simantics.databoard.binding.error.RuntimeBindingConstructionException; import org.simantics.databoard.binding.mutable.Variant; import org.simantics.databoard.container.DataContainer; import org.simantics.databoard.container.DataContainers; -import org.simantics.databoard.serialization.SerializationException; import org.simantics.graph.compiler.internal.parsing.Parsing; import org.simantics.graph.compiler.internal.procedures.AddConsistsOf; import org.simantics.graph.compiler.internal.procedures.ApplyTemplates; @@ -39,6 +39,7 @@ import org.simantics.graph.compiler.internal.validation.ValidateGraph; import org.simantics.graph.query.CompositeGraph; import org.simantics.graph.query.Paths; import org.simantics.graph.query.TransferableGraphConversion; +import org.simantics.graph.representation.Extensions; import org.simantics.graph.representation.TransferableGraph1; import org.simantics.graph.store.GraphStore; import org.simantics.ltk.FileSource; @@ -56,25 +57,38 @@ public class GraphCompiler { } public static TransferableGraph1 read(InputStream stream) throws AdaptException, IOException { - DataContainer container = DataContainers.readFile(new DataInputStream(stream)); - stream.close(); - return (TransferableGraph1)container.content.getValue(TransferableGraph1.BINDING); + try (InputStream in = stream) { + DataContainer container = DataContainers.readFile(new DataInputStream(stream)); + return (TransferableGraph1)container.content.getValue(TransferableGraph1.BINDING); + } } public static InputStream write(TransferableGraph1 tg) throws BindingException, IOException { + Binding binding = TransferableGraph1.BINDING; + int hashCode = binding.hashValue(tg); + TreeMap metadata = new TreeMap<>(); + metadata.put(Extensions.CACHED_HASHCODE, new Variant(Bindings.INTEGER, hashCode)); byte[] buffer = DataContainers.writeFile( - new DataContainer("graph", 1, new Variant(TransferableGraph1.BINDING, tg)) + new DataContainer("graph", 1, metadata, new Variant(binding, tg)) ); return new ByteArrayInputStream(buffer); } + public static void write(File file, TransferableGraph1 tg) throws BindingException, IOException { + Binding binding = TransferableGraph1.BINDING; + int hashCode = binding.hashValue(tg); + TreeMap metadata = new TreeMap<>(); + metadata.put(Extensions.CACHED_HASHCODE, new Variant(Bindings.INTEGER, hashCode)); + DataContainers.writeFile(file, new DataContainer("graph", 1, metadata, new Variant(binding, tg))); + } + public static CompilationResult compile( String Layer0Version, Collection sources, Collection dependencies, ExternalFileLoader fileLoader, GraphCompilerPreferences preferences) { - out.println(preferences); + //out.println(preferences); Collection errors = new ArrayList(); GraphStore store = new GraphStore(); @@ -191,18 +205,19 @@ public class GraphCompiler { } private static void run(Runnable runnable) { - long beginTime = System.nanoTime(); + //long beginTime = System.nanoTime(); runnable.run(); - long endTime = System.nanoTime(); + //long endTime = System.nanoTime(); - reportTime(runnable.getClass().getSimpleName(), beginTime, endTime); + //reportTime(runnable.getClass().getSimpleName(), beginTime, endTime); } public static void reportTime(String taskName, long beginTime, long endTime) { StringBuilder sb = new StringBuilder(); - Formatter formatter = new Formatter(sb, Locale.US); - formatter.format("%-25s %8.4f ms", taskName, (endTime - beginTime)*1e-6); - + @SuppressWarnings("resource") + Formatter formatter = new Formatter(sb, Locale.US); + formatter.format("%-25s %8.4f ms", taskName, (endTime - beginTime)*1e-6); + out.println(sb.toString()); }