View Javadoc

1   /*
2    * Copyright (c) 2004 International Decision Systems, Inc.  All Rights Reserved.
3    *
4    * By using this Software, You acknowledge that the Software is a valuable asset
5    * and trade secret of either International Decision Systems, Inc. ("IDSI") or a
6    * third party supplier of IDSI and constitutes confidential and proprietary
7    * information.
8    *
9    * NEITHER IDSI NOR ANY AGENT OR PERSON ACTING FOR OR WITH IDSI HAS MADE OR DOES
10   * MAKE ANY STATEMENTS, AFFIRMATIONS, REPRESENTATIONS OR WARRANTIES WHATSOEVER
11   * TO YOU, WHETHER EXPRESS OR IMPLIED, AS TO THE SOFTWARE, THE QUALITY OR
12   * CONDITION OF THE SOFTWARE, OR THE OPERATING CHARACTERISTICS OR RELIABILITY OF
13   * THE SOFTWARE, OR ITS SUITABILITY FOR ANY GENERAL OR PARTICULAR PURPOSE, OR AS
14   * TO ANY OTHER MATTER WHATSOEVER; ANY AND ALL OTHER WARRANTIES INCLUDING
15   * WITHOUT LIMITATION ANY WARRANTIES IMPLIED BY LAW, SUCH AS THE IMPLIED
16   * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND TITLE,
17   * USE AND NON-INFRINGEMENT; ARE HEREBY EXPRESSLY DISCLAIMED AND EXCLUDED.
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(), // group filter
59                  new SelectAllFilter(), // script filter
60                  scriptRunnerMap, // maps sql to JDBCScriptRunner
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), // group filter
91                  new DifferenceFilter(completedScripts, true), // script filter
92                  scriptRunnerMap,
93                  null);
94          return runner;
95      }
96  
97  }