X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FSCLCombinator.java;fp=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FSCLCombinator.java;h=1a7fd0cefaf5f60c2320712d63e6298b58f1228d;hb=8c7637425667bd9710be0fe6afe437050fea59b7;hp=0000000000000000000000000000000000000000;hpb=3474f080188aca472256339b9c3458bac3dd6b82;p=simantics%2Finterop.git 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 index 0000000..1a7fd0c --- /dev/null +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/SCLCombinator.java @@ -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 -> Maybe " + className); + writer.println(" "); + for (String s : sortedResourcses) { + writer.println(" @JavaName "+s); + writer.println(" "+s+" :: " + className + " -> Maybe Resource"); + writer.println(" "); + } + + } finally { + writer.close(); + } + } + +}