View Javadoc

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