X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.graph%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Frefactoring%2FTransferableGraphHasher.java;fp=bundles%2Forg.simantics.graph%2Fsrc%2Forg%2Fsimantics%2Fgraph%2Frefactoring%2FTransferableGraphHasher.java;h=e1cf3f6f4b7612cc55c1de5799224fd1defd3322;hp=0000000000000000000000000000000000000000;hb=77921feee3f8331ab54796ff0832921405bea874;hpb=9436bf9b21fc26aa7eb41d128ebe42c9668cedf4
diff --git a/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/TransferableGraphHasher.java b/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/TransferableGraphHasher.java
new file mode 100644
index 000000000..e1cf3f6f4
--- /dev/null
+++ b/bundles/org.simantics.graph/src/org/simantics/graph/refactoring/TransferableGraphHasher.java
@@ -0,0 +1,56 @@
+package org.simantics.graph.refactoring;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.adapter.AdaptException;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.databoard.container.DataContainer;
+import org.simantics.databoard.container.DataContainers;
+import org.simantics.graph.representation.Extensions;
+import org.simantics.graph.representation.TransferableGraph1;
+
+/**
+ * @author Tuukka Lehtonen
+ * @since 1.34.0
+ */
+public class TransferableGraphHasher {
+
+ public static int hashTG(TransferableGraph1 tg) throws BindingException {
+ return TransferableGraph1.BINDING.hashValue(tg);
+ }
+
+ public static DataContainer addHashToTG(DataContainer tgContainer, TransferableGraph1 tg) throws BindingException {
+ Binding tgb = TransferableGraph1.BINDING;
+ tgContainer.metadata.put(Extensions.CACHED_HASHCODE, new Variant(Bindings.INTEGER, hashTG(tg)));
+ tgContainer.content = new Variant(tgb, tg);
+ return tgContainer;
+ }
+
+ public static DataContainer addHashToTG(DataContainer tgContainer) throws BindingException, AdaptException {
+ return addHashToTG(tgContainer, (TransferableGraph1) tgContainer.content.getValue(TransferableGraph1.BINDING));
+ }
+
+ public static void hashTG(Path input, Path output) throws Exception {
+ System.out.format("Adding cached hash value to transferable graph%n\t" + input.toString() + "%nto%n\t" + output.toString());
+ DataContainers.writeFile(output.toFile(),
+ addHashToTG(
+ DataContainers.readFile(input.toFile(), TransferableGraph1.BINDING) ));
+ }
+
+ public static void main(String[] args) throws Exception {
+ if (args.length == 0) {
+ System.out.println("Required arguments: [