1
2
3
4
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 }