Coverage Report - org.kuali.rice.test.DerbyDBCreationLifecycle
 
Classes in this File Line Coverage Branch Coverage Complexity
DerbyDBCreationLifecycle
0%
0/33
0%
0/10
2.25
 
 1  
 /*
 2  
  * Copyright 2007 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  * http://www.opensource.org/licenses/ecl2.php
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.kuali.rice.test;
 17  
 
 18  
 import java.io.File;
 19  
 import java.sql.DriverManager;
 20  
 
 21  
 import org.apache.log4j.Logger;
 22  
 import org.kuali.rice.core.api.config.ConfigurationException;
 23  
 import org.kuali.rice.core.api.config.property.Config;
 24  
 import org.kuali.rice.core.api.config.property.ConfigContext;
 25  
 import org.kuali.rice.core.api.lifecycle.Lifecycle;
 26  
 
 27  
 public class DerbyDBCreationLifecycle implements Lifecycle {
 28  
         
 29  0
         private static final Logger LOG = Logger.getLogger(DerbyDBCreationLifecycle.class);
 30  
         
 31  
         private String sqlFile;
 32  
         
 33  0
         public DerbyDBCreationLifecycle(String sqlFile) {
 34  0
                 this.setSqlFile(sqlFile);
 35  0
         }
 36  
 
 37  
         public boolean isStarted() {
 38  0
                 return false;
 39  
         }
 40  
 
 41  
         public void start() throws Exception {
 42  0
                 if (! isDoingDerby()) {
 43  0
                         LOG.info("Not using the Derby database for testing or no ddl file found");
 44  0
                         return;
 45  
                 }
 46  
         
 47  
                 //just checking that the driver's on the classpath and the url is valid
 48  0
         Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
 49  0
         DriverManager.getConnection(ConfigContext.getCurrentContextConfig().getProperty("datasource.url")).close();
 50  
                 
 51  0
                 String dbLocation = ConfigContext.getCurrentContextConfig().getProperty("db.location");
 52  0
                 File db = new File(dbLocation);
 53  0
                 if (! db.exists()) {
 54  0
                         throw new ConfigurationException("Can't find db file " + dbLocation);
 55  
                 }
 56  
                 
 57  0
                 if (isDerbyDBReadyForTests()) {
 58  0
                         LOG.info("Derby ready for testing");
 59  0
                         return;
 60  
                 }
 61  
                 
 62  0
                 LOG.info("Setting up Derby for testing");
 63  0
                 LOG.info("Derby connection string: " + ConfigContext.getCurrentContextConfig().getProperty("datasource.url"));
 64  0
                 SQLDataLoader dataLoader = new SQLDataLoader(this.getSqlFile(), ";");
 65  0
                 dataLoader.runSql();
 66  0
         }
 67  
 
 68  
         public void stop() throws Exception {
 69  
                 
 70  0
         }
 71  
         
 72  
         private boolean isDerbyDBReadyForTests() {
 73  0
                 return new ClearDatabaseLifecycle().isTestTableInSchema(TestHarnessServiceLocator.getDataSource());
 74  
         }
 75  
         
 76  
         protected boolean isDoingDerby() {
 77  0
                 if (this.getSqlFile() == null) {
 78  0
                         return false;
 79  
                 }
 80  0
                 String dbDriverName = ConfigContext.getCurrentContextConfig().getProperty(Config.DATASOURCE_DRIVER_NAME);
 81  0
                 if (dbDriverName == null) {
 82  0
                         throw new ConfigurationException("No property '" + Config.DATASOURCE_DRIVER_NAME + "' found");
 83  
                 }
 84  0
                 return dbDriverName.toLowerCase().contains("derby");
 85  
         }
 86  
 
 87  
         public String getSqlFile() {
 88  0
                 return sqlFile;
 89  
         }
 90  
 
 91  
         public void setSqlFile(String sqlFile) {
 92  0
                 this.sqlFile = sqlFile;
 93  0
         }
 94  
 }