]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/LiteralIntegerArrayStringAdapter.java
Merge "Adapters to convert various literals to Strings" into release/1.43.1
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / adapter / LiteralIntegerArrayStringAdapter.java
diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/LiteralIntegerArrayStringAdapter.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/LiteralIntegerArrayStringAdapter.java
new file mode 100644 (file)
index 0000000..39aeb71
--- /dev/null
@@ -0,0 +1,37 @@
+package org.simantics.db.layer0.adapter;
+
+import java.util.Arrays;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.db.AsyncReadGraph;
+import org.simantics.db.RelationContext;
+import org.simantics.db.Resource;
+import org.simantics.db.adaption.Adapter;
+import org.simantics.db.procedure.AsyncProcedure;
+
+public class LiteralIntegerArrayStringAdapter implements Adapter<String, RelationContext> {
+
+    @Override
+    public void adapt(AsyncReadGraph g, Resource source, RelationContext s, final AsyncProcedure<String> procedure) {
+        g.forValue(s.getStatement().getObject(), Bindings.INT_ARRAY, new  ProcedureWrapper(procedure));
+    }
+    
+    private static class ProcedureWrapper implements AsyncProcedure<int[]> {
+       AsyncProcedure<String> procedure;
+       
+       public ProcedureWrapper(AsyncProcedure<String> procedure) {
+                       this.procedure = procedure;
+               }
+       
+       public void execute(AsyncReadGraph graph, int[] result) {
+               procedure.execute(graph, Arrays.toString(result));
+       };
+       
+       @Override
+       public void exception(AsyncReadGraph graph, Throwable throwable) {
+               procedure.exception(graph, throwable);
+               
+       }
+    }
+    
+}