]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/SCLCombinator.java
Generate SCL bindings for multi-version ontology references classes.
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / SCLCombinator.java
diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/SCLCombinator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/SCLCombinator.java
new file mode 100644 (file)
index 0000000..1a7fd0c
--- /dev/null
@@ -0,0 +1,49 @@
+package org.simantics.xml.sax;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * Creates a SCL module for Java combination class.
+ * 
+ * @see org.simantics.xml.sax.OntologyCombinator
+ * 
+ * @author luukkainen
+ *
+ */
+public class SCLCombinator extends OntologyCombinator{
+       
+       @Override
+       public void combine(File[] inputFiles, File outputFile) throws IOException {
+               super.process(inputFiles);
+               
+               PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(outputFile)));
+               String className = outputFile.getName();
+               int dp = className.indexOf(".");
+               if (dp > 0)
+                       className = className.substring(0,dp);
+               
+               try {
+                       writer.println("import \"Simantics/DB\"");
+                       writer.println();
+                       writer.println("importJava \"" + packageLine.substring(packageLineStart.length()+1,packageLine.length()-1) + "." + className + "\" where");
+                       writer.println("  data " + className);
+                       writer.println("  ");
+                       writer.println("  @JavaName getOntology");
+                       writer.println("  getOntology :: Resource -> <ReadGraph> Maybe " + className);
+                       writer.println("  ");
+                       for (String s : sortedResourcses) {
+                   writer.println("  @JavaName "+s);
+                   writer.println("  "+s+" :: " + className + " -> Maybe Resource");
+                   writer.println("  ");
+                       }
+                       
+               }       finally {
+                       writer.close();
+               }
+       }
+
+}