1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.addam.ddlrun.runners;
20
21
22 import java.sql.Connection;
23 import java.sql.SQLException;
24 import java.util.Collection;
25 import java.util.HashMap;
26
27 import net.sourceforge.addam.ddlrun.custom.IDSRunLogger;
28 import net.sourceforge.addam.ddlrun.filters.DifferenceFilter;
29 import net.sourceforge.addam.ddlrun.filters.SelectAllFilter;
30 import net.sourceforge.addam.ddlrun.filters.StartPointFilter;
31 import net.sourceforge.addam.ddlrun.grammars.ScriptGrammar;
32 import net.sourceforge.addam.ddlrun.utils.CompletedScriptRetriever;
33 import net.sourceforge.addam.ddlrun.utils.ResourceReaderFactory;
34 import net.sourceforge.addam.ddlrun.utils.RunLogger;
35 import net.sourceforge.addam.ddlrun.utils.StartFolderRetriever;
36
37 /**
38 * Used to easily create DeploymentRunners for install and upgrade.
39 *
40 * @author TIM3
41 * @since Mar 25, 2005
42 */
43 public class DeploymentRunnerFactory {
44
45 static public DeploymentRunnerFactory getInstance() {
46 return new DeploymentRunnerFactory();
47 }
48
49 public DeploymentRunner getInstallRunner(ResourceReaderFactory readerFactory,
50 Connection connection,
51 ScriptGrammar grammar) {
52 HashMap scriptRunnerMap = new HashMap();
53 Runner statementRunner = new JDBCStatementRunner(connection);
54 Runner scriptRunner = new JDBCScriptRunner(readerFactory, grammar, statementRunner);
55 scriptRunnerMap.put("sql", scriptRunner);
56
57 DeploymentRunner runner = new DeploymentRunner(readerFactory,
58 new SelectAllFilter(),
59 new SelectAllFilter(),
60 scriptRunnerMap,
61 null);
62
63 return runner;
64 }
65
66 /**
67 * @param readerFactory
68 * @param connection
69 * @param grammar
70 * @param startFolderRetriever
71 * @param completedScriptRetriever
72 * @return
73 * @throws SQLException if there is a problem selecting the start folder or completed scripts
74 */
75 public DeploymentRunner getUpgradeRunner(ResourceReaderFactory readerFactory,
76 Connection connection,
77 ScriptGrammar grammar,
78 StartFolderRetriever startFolderRetriever,
79 CompletedScriptRetriever completedScriptRetriever) throws SQLException {
80 DeploymentRunner runner;
81 HashMap scriptRunnerMap = new HashMap();
82 Runner statementRunner = new JDBCStatementRunner(connection);
83 Runner scriptRunner = new JDBCScriptRunner(readerFactory, grammar, statementRunner);
84 RunLogger runLogger = new IDSRunLogger(connection, null);
85 scriptRunnerMap.put("sql", scriptRunner);
86
87 String startFolder = startFolderRetriever.getStartFolder();
88 Collection completedScripts = completedScriptRetriever.getCompletedScripts();
89 runner = new DeploymentRunner(readerFactory,
90 new StartPointFilter(startFolder),
91 new DifferenceFilter(completedScripts, true),
92 scriptRunnerMap,
93 null);
94 return runner;
95 }
96
97 }