package agg.convert; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import java.io.InputStream; import javax.xml.transform.TransformerFactory; import javax.xml.transform.Transformer; import javax.xml.transform.Source; import javax.xml.transform.Result; import javax.xml.transform.Templates; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamResult; public class ConverterXML { String sourceName; String ext; public ConverterXML() { } public boolean ggx2gxl(String filenameIn, String filenameOut, String srcName) { this.sourceName = srcName; return ggx2gxl(filenameIn, filenameOut); } public boolean ggx2gxl(String filenameIn, String filenameOut) { // System.out.println(filenameIn+" -> "+filenameOut); TransformerFactory tf = TransformerFactory.newInstance(); // System.out.println("factory: "+tf); Source templatesSrc = null; if ((this.sourceName != null) && !this.sourceName.equals("")) { templatesSrc = getTemplatesSource(this.sourceName); } else { java.net.URL url = ClassLoader.getSystemClassLoader() .getResource("agg/convert/ggx2gxl.xsl"); if (url != null) { templatesSrc = getTemplatesSource(url.getFile()); } } // System.out.println("templates source: "+templatesSrc); if (templatesSrc == null) { System.out .println("agg.convert.ConverterXML.ggx2gxl:: source 'ggx2gxl.xsl' NOT FOUND"); return false; } Source src = getSource(".ggx", filenameIn); // System.out.println("source: "+src); Result result = getResult(".gxl", filenameOut); // System.out.println("result: "+result); if (src == null || result == null) return false; Templates templates = null; try { templates = tf.newTemplates(templatesSrc); // System.out.println("templates: "+templates); } catch (TransformerConfigurationException ex1) { System.out.println(ex1.getMessage()); return false; } Transformer transformer = null; try { transformer = templates.newTransformer(); // System.out.println("transformer: "+transformer); try { transformer.transform(src, result); } catch (TransformerException ex3) { System.out.println(ex3.getMessage()); return false; } } catch (TransformerConfigurationException ex2) { System.out.println(ex2.getMessage()); return false; } return true; } public boolean gxl2ggx(String filenameIn, String filenameOut, String srcName) { this.sourceName = srcName; return gxl2ggx(filenameIn, filenameOut); } public boolean gxl2ggx(String filenameIn, String filenameOut) { // System.out.println("gxl2ggx: "+ filenameIn+" -> "+ filenameOut); TransformerFactory tf = TransformerFactory.newInstance(); Source templatesSrc = null; // System.out.println("sourceName: "+ sourceName); if ((this.sourceName != null) && !this.sourceName.equals("")) { templatesSrc = getTemplatesSource(this.sourceName); // System.out.println("templates source : "+templatesSrc); } else { java.net.URL url = ClassLoader.getSystemClassLoader() .getResource("agg/convert/gxl2ggx.xsl"); if (url != null) { // System.out.println("templates source file by ClassLoader : "+url.getFile()); templatesSrc = getTemplatesSource(url.getFile()); } } // System.out.println("templates source : "+templatesSrc); if (templatesSrc == null) { System.out .println("agg.convert.ConverterXML.gxl2ggx:: source 'gxl2ggx.xsl' NOT FOUND"); return false; } Source src = getSource(".gxl", filenameIn); // System.out.println("source: "+src); Result result = getResult(".ggx", filenameOut); System.out.println("result: "+result); if (src == null || result == null) return false; Templates templates = null; try { templates = tf.newTemplates(templatesSrc); // System.out.println("templates: "+templates); } catch (TransformerConfigurationException ex1) { System.out.println("TransformerConfigurationException. "+ex1.getMessage()); return false; } Transformer transformer = null; try { transformer = templates.newTransformer(); // System.out.println("transformer: "+transformer); try { transformer.transform(src, result); } catch (TransformerException ex3) { System.out.println(ex3.getMessage()); return false; } } catch (TransformerConfigurationException ex2) { System.out.println(ex2.getMessage()); return false; } return true; } public boolean gts2gtxl(String filenameIn, String filenameOut, String srcName) { this.sourceName = srcName; return gts2gtxl(filenameIn, filenameOut); } public boolean gts2gtxl(String filenameIn, String filenameOut) { // System.out.println("ConverterXML.gts2gtxl "); // System.out.println("source: "+sourceName); TransformerFactory tf = TransformerFactory.newInstance(); // System.out.println("factory: "+tf); Source templatesSrc = null; if ((this.sourceName != null) && !this.sourceName.equals("")) { templatesSrc = getTemplatesSource(this.sourceName); } else { java.net.URL url = ClassLoader.getSystemClassLoader() .getResource("agg/convert/gts2gtxl.xsl"); if (url != null) { templatesSrc = getTemplatesSource(url.getFile()); } } // System.out.println("templates source: "+templatesSrc); if (templatesSrc == null) { System.out .println("agg.convert.ConverterXML.gts2gtxl:: source 'gts2gtxl.xsl' NOT FOUND"); return false; } Source src = getSource(".ggx", filenameIn); // System.out.println("source: "+src); // System.out.println("filenameIn: "+filenameIn); Result result = getResult(".gtxl", filenameOut); // System.out.println("result: "+result); // System.out.println("filenameOut: "+filenameOut); if (src == null || result == null) return false; Templates templates = null; try { templates = tf.newTemplates(templatesSrc); // System.out.println("templates: "+templates); } catch (TransformerConfigurationException ex1) { System.out.println(ex1.getMessage()); return false; } Transformer transformer = null; try { transformer = templates.newTransformer(); // System.out.println("transformer: "+transformer); try { transformer.transform(src, result); } catch (TransformerException ex3) { System.out.println(ex3.getMessage()); return false; } } catch (TransformerConfigurationException ex2) { System.out.println(ex2.getMessage()); return false; } return true; } public boolean gtxl2gts(String filenameIn, String filenameOut, String srcName) { return false; } public boolean gtxl2gts(String filenameIn, String filenameOut) { return false; } public boolean omondoxmi2ggx(String filenameIn, String filenameOut, String sourceNameGXL, String sourceNameGGX) { // System.out.println("ConverterXML.omondoxmi2ggx ... "+filenameIn+" // "+filenameOut+" "+sourceNameGXL+" "+sourceNameGGX); // String suffix = ".gxl"; String name = filenameIn.substring(0, filenameIn.lastIndexOf('.')); System.out.println(name); String filenameOutGXL = name //filenameIn.substring(0, filenameIn.length() - 6) + "_ecore.gxl"; TransformerFactory tf = TransformerFactory.newInstance(); // System.out.println("factory: "+tf); Source templatesSrcGXL = null; if ((sourceNameGXL != null) && !sourceNameGXL.equals("")) { templatesSrcGXL = getTemplatesSource(sourceNameGXL); } else { java.net.URL url = ClassLoader.getSystemClassLoader() .getResource("agg/convert/omondoxmi2gxl.xsl"); if (url != null) { templatesSrcGXL = getTemplatesSource(url.getFile()); } } // System.out.println("templates GXL source: "+templatesSrcGXL); if (templatesSrcGXL == null) { System.out .println("agg.convert.ConverterXML.omondoxmi2gxl:: template source 'omondoxmi2gxl.xsl' NOT FOUND"); return false; } Source templatesSrcGGX = null; if ((sourceNameGGX != null) && !sourceNameGGX.equals("")) { templatesSrcGGX = getTemplatesSource(sourceNameGGX); } else { java.net.URL url = ClassLoader .getSystemResource("agg/convert/gxl2ggx.xsl"); templatesSrcGGX = getTemplatesSource(url.getFile()); } // System.out.println("templates GGX source: "+templatesSrcGGX); if (templatesSrcGGX == null) { System.out .println("agg.convert.ConverterXML.omondoxmi2gxl:: template source 'gxl2ggx.xsl' NOT FOUND"); return false; } Source src = getSource(".ecore", filenameIn); if (src != null) ext = ".ecore"; else { ext = ""; // src = getSource(".ron", filenameIn); // if (src != null) // ext = ".ron"; // else { // src = getSource(".actigra", filenameIn); // if (src != null) // ext = ".actigra"; // else { // src = getSource(".henshin", filenameIn); // if (src != null) // ext = ".henshin"; // else // ext = ""; // } // } } // System.out.println(this.getClass().getName()+":: "+ ext+" source: "+src); Result result = getResult(".gxl", filenameOutGXL); // System.out.println("result: "+result); if (src == null || result == null) return false; Templates templates = null; try { // System.out.println("try to create templates ..."); templates = tf.newTemplates(templatesSrcGXL); // System.out.println("templates: "+templates); } catch (TransformerConfigurationException ex1) { System.out .println("agg.convert.ConverterXML.omondoxmi2gxl:: TransformerConfigurationException\n" + ex1.getLocalizedMessage()); return false; } Transformer transformer = null; try { // System.out.println("try to create transformer ..."); transformer = templates.newTransformer(); // transformer = tf.newTransformer(templatesSrcGXL); // System.out.println("transformer: "+transformer); transformer.transform(src, result); // System.out.println("transformation from OMONDO to GXL done."); } catch (TransformerException ex3) { System.out .println("agg.convert.ConverterXML.omondoxmi2gxl:: TransformerException:\n" + ex3.getLocalizedMessage()); return false; } return gxl2ggx(filenameOutGXL, filenameOut, sourceNameGGX); } public String getFileExtOfImport() { return this.ext; } public File copyFile(String dirName, String fileName) { try { InputStream fis = this.getClass().getResourceAsStream( "/agg/convert/" + fileName); File outFile = new File(dirName + fileName); outFile.deleteOnExit(); FileOutputStream fos = new FileOutputStream(outFile); byte buffer[] = new byte[1024 * 64]; try { while (true) { int length = fis.read(buffer); if (length != -1) fos.write(buffer, 0, length); else break; } fis.close(); fos.close(); return outFile; } catch (IOException ex) { } } catch (FileNotFoundException ex1) { } System.out.println("agg.convert.ConverterXML.copyFile:: source " + fileName + " NOT FOUND"); return null; } private Source getTemplatesSource(String filename) { File f = new File(filename); StreamSource stream = new StreamSource(f); return stream; } private Source getSource(String filter, String filename) { File f = new File(filename); if (!f.exists()) { return null; } StreamSource stream = new StreamSource(f); return stream; } private Result getResult(String filter, String filename) { File f = new File(filename); if (!f.exists()) { try { f.createNewFile(); } catch (IOException ex) { return null; } } StreamResult stream = new StreamResult(f); return stream; } }