View Javadoc

1   /*
2    * $Id: EPNML2GWorkflowDLConverter.java 1353 2010-03-04 16:21:48Z andreas.hoheisel@first.fraunhofer.de $
3    *
4    * Copyright (c) 2008, Fraunhofer FIRST
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.first.fraunhofer.de and http://www.gridworkflow.org/gwes for more details.
7    */
8   package net.kwfgrid.gworkflowdl.conversion;
9   
10  import org.jdom.transform.XSLTransformer;
11  import org.jdom.transform.XSLTransformException;
12  import org.jdom.Document;
13  import org.jdom.JDOMException;
14  import org.jdom.input.SAXBuilder;
15  
16  import java.io.*;
17  
18  import net.kwfgrid.gworkflowdl.structure.JdomString;
19  
20  /***
21   * @author Andreas Hoheisel
22   *         (<a href="http://www.andreas-hoheisel.de">www.andreas-hoheisel.de</a>)
23   * @version $Id: EPNML2GWorkflowDLConverter.java 1353 2010-03-04 16:21:48Z andreas.hoheisel@first.fraunhofer.de $
24   */
25  public class EPNML2GWorkflowDLConverter {
26  
27      private final XSLTransformer transformer;
28  
29      private static final boolean VALIDATE = false;
30      private static final String FEATURE_VALIDATION = "http://xml.org/sax/features/validation";
31      private static final String FEATURE_XSD = "http://apache.org/xml/features/validation/schema";
32      private static final String PROPERTY_XSD = "http://apache.org/xml/properties/schema/external-schemaLocation";
33  
34  
35      public EPNML2GWorkflowDLConverter() throws XSLTransformException {
36          System.setProperty( "javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl");
37          transformer = new XSLTransformer(getClass().getResourceAsStream("/epnml_1_1-to-gworkflowdl_2_1.xsl"));
38      }
39  
40      /***
41       * Transforms EPNML 1.1 document to GWorkflowDL version 1.1
42       * @param epml The EPNML 1.1 document
43       * @return The GWorkflowDL 1.1 document
44       * @throws org.jdom.transform.XSLTransformException
45       */
46      public Document convertFromEPNMLToGWorkflowDL(Document epml) throws XSLTransformException {
47          return transformer.transform(epml);
48      }
49  
50      public String convertFromEPNMLToGWorkflowDL(String xml) throws IOException, JDOMException {
51          final SAXBuilder builder = new SAXBuilder(VALIDATE);
52          builder.setFeature(FEATURE_VALIDATION, VALIDATE);
53          builder.setFeature(FEATURE_XSD, false);
54          Document gwdl11 = convertFromEPNMLToGWorkflowDL(builder.build(new StringReader(xml)));
55          return JdomString.document2string(gwdl11);
56      }
57  
58      public static void main(String[] args) {
59          if (args.length < 2) {
60              System.out.println("Transforms EPNML 1.1 document to GWorkflowDL version 1.1");
61              System.out.println("Usage: java net.kwfgrid.gworkflowdl.conversion.EPNML2GWorkflowDLConverter <filename_epnml_1.1> <filename_gwdl_1.1>");
62              System.exit(1);
63          }
64  
65          try {
66              EPNML2GWorkflowDLConverter converter = new EPNML2GWorkflowDLConverter();
67              FileUtils.writeFile(args[1],converter.convertFromEPNMLToGWorkflowDL(FileUtils.readFile(args[0])));
68          } catch (XSLTransformException e) {
69              System.err.println("exception:\n" + e);
70              System.exit(255);
71          } catch (IOException e) {
72              System.err.println("exception:\n" + e);
73              System.exit(254);
74          } catch (JDOMException e) {
75              System.err.println("exception:\n" + e);
76              System.exit(253);
77          }
78      }
79  
80  }