View Javadoc

1   /*
2    * BUD, installer for development platform.
3    *
4    * Copyright(c) 2006 bud-project - http://opensource.org/licenses/apachepl.php
5    */
6   package org.bud.kernel;
7   import java.io.File;
8   import java.io.IOException;
9   import javax.xml.transform.Transformer;
10  import javax.xml.transform.TransformerException;
11  import javax.xml.transform.TransformerFactory;
12  import javax.xml.transform.stream.StreamResult;
13  import javax.xml.transform.stream.StreamSource;
14  import org.bud.kernel.model.Release;
15  /***
16   *
17   */
18  public class ScriptBuilder {
19      public static final String XSL = "ScriptBuilder.xsl";
20      public static final String INSTALL_TYPE = "install";
21      public static final String UNINSTALL_TYPE = "uninstall";
22      private final PlatormManager platformManager;
23  
24  
25      public ScriptBuilder(PlatormManager platformManager) {
26          this.platformManager = platformManager;
27      }
28  
29  
30      public Script createInstallScript(Release release)
31            throws IOException, TransformerException {
32          return applyXsl(INSTALL_TYPE, release);
33      }
34  
35  
36      public Script createUninstallScript(Release release)
37            throws TransformerException, IOException {
38          return applyXsl(UNINSTALL_TYPE, release);
39      }
40  
41  
42      private Script applyXsl(String scriptType, Release release)
43            throws IOException, TransformerException {
44          File installScript = File.createTempFile("bud-", "-" + scriptType + ".xml");
45          installScript.deleteOnExit();
46          try {
47              TransformerFactory factory = TransformerFactory.newInstance();
48              Transformer xsl =
49                    factory.newTransformer(new StreamSource(getClass().getResourceAsStream(XSL)));
50  
51              xsl.setParameter("version", release.getVersion().toString());
52              xsl.setParameter("scriptType", scriptType);
53              xsl.transform(new StreamSource(platformManager.modelToReader()),
54                            new StreamResult(installScript));
55              return new Script(installScript, release);
56          }
57          catch (TransformerException e) {
58              installScript.delete();
59              throw e;
60          }
61      }
62  }