View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.jetspeed.anttasks;
18  
19  import org.apache.tools.ant.BuildException;
20  import org.apache.tools.ant.taskdefs.JDBCTask;
21  import java.sql.Connection;
22  import java.sql.SQLException;
23  import java.util.Properties;
24  import org.apache.tools.ant.Project;
25  
26  public class StartDatabase
27    extends JDBCTask  {
28  
29    
30    
31    
32    public void execute() 
33      throws BuildException 
34      {
35  	    if (StartDerby.getDriver(getProject()) == null)
36  	    	 throw new BuildException("Derby driver not established!", getLocation());
37  	  	// reuse excisting connection:
38  	  	if (StartDerby.getConnection(getProject()) != null)
39  	  	{
40  			System.out.println("Connection already established");
41  			return;
42  	  	}
43  	  	// do almost the same as in the orignial JDBC tasks:
44  	  	
45  	        if (getUrl() == null) {
46  	            throw new BuildException("Url attribute must be set!", getLocation());
47  	        }
48  	        try {
49  
50  	            log("connecting to " + getUrl(), Project.MSG_VERBOSE);
51  	            Properties info = new Properties();
52  	            if (getUserId() != null)
53  	            	info.put("user", getUserId());
54  	            if (getPassword() != null)
55  	            	info.put("password", getPassword());
56  	            
57  	            Connection conn = StartDerby.getDriver(getProject()).connect(getUrl(), info);
58  	            if (conn == null) {
59  	                // Driver doesn't understand the URL
60  	                throw new SQLException("No suitable Driver for " +  getUrl());
61  	            }
62  
63  	            conn.setAutoCommit(isAutocommit());
64  	            StartDerby.setConnection(getProject(),conn);
65  	            System.out.println("Derby connected to " + getUrl());
66  	            return;
67  	        } catch (SQLException e) {
68  	            throw new BuildException(e, getLocation());
69  	        }
70   }
71    
72  }