Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: javatools/db/ConnectionString.java


1   /*
2    * Class.java
3    *
4    * Created on 8 gennaio 2002, 18.59
5       Javatools (modified version) - Some useful general classes.
6       Copyright (C) 2002-2003  Chris Bitmead (original) Antonio Petrelli (modified)
7   
8       This program is free software; you can redistribute it and/or modify
9       it under the terms of the GNU General Public License as published by
10      the Free Software Foundation; either version 2 of the License, or
11      (at your option) any later version.
12  
13      This program is distributed in the hope that it will be useful,
14      but WITHOUT ANY WARRANTY; without even the implied warranty of
15      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16      GNU General Public License for more details.
17  
18      You should have received a copy of the GNU General Public License
19      along with this program; if not, write to the Free Software
20      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  
22      Contact me at: brenmcguire@users.sourceforge.net
23   */
24  
25  package javatools.db;
26  
27  import javatools.util.*;
28  import java.io.*;
29  
30  /**
31   * A class to manage the building of connection string for JDBC.
32   * @author Antonio Petrelli
33   * @version 0.3.0
34   */
35  public class ConnectionString {
36  
37      /** Returns a connection string for given parameters
38       * @return The needed connection string.
39       * @param dbDir The directory to be taken for DBMSs that use database-files.
40       * @param manager The manager for getting properties.
41       * @param dbms The name of DBMS used
42       * @param driver Name of the JDBC driver class
43       * @param dbmsAddress The address of the dbms
44       * @param port Port used for connection.
45       * Use <CODE>-1</CODE> if you want to use default port.
46       * @param dbName Name of the database to connect to.
47       * @param userName User Name to connect to the DBMS. Notice that this way you will create a connection string in which user name is specified! Then you have not to put it as a parameter when you connect to the DBMS.
48       * @param password Password for connection.
49       * @throws DbException If some parameter are wrong or DbManager not valid.
50       */    
51      public static String build(DbManager manager, String dbms, String driver,
52              String dbmsAddress, int port, String dbDir, String dbName,
53              String userName, String password) throws DbException {
54          String buildingString, dbPrefix, userNameClause, passwordClause, dbNameSuffix;
55          
56          dbPrefix = dbms+"."+driver+".";
57          try {
58              buildingString = manager.getProps().getProperty(dbPrefix+"connectionString");
59          }
60          catch (IOException e) {
61              throw new DbException(e.getMessage());
62          }
63          if (!buildingString.equals("")) {
64              if (dbmsAddress.equals(""))
65                  buildingString = SubstituteVariable.substitute(buildingString, "${dbmsAddress}", "");
66              else
67                  buildingString = SubstituteVariable.substitute(buildingString, "${dbmsAddress}", dbmsAddress);
68              buildingString = SubstituteVariable.substitute(buildingString, "${dbName}", dbName);
69              try {
70                  dbNameSuffix = (manager.getProps().getProperty(dbPrefix+"dbNameSuffix"));
71                  if (dbNameSuffix != null)
72                      if (!dbName.equals(""))
73                          buildingString = SubstituteVariable.substitute(
74                              buildingString, "${dbNameSuffix}", dbNameSuffix);
75                      else
76                          buildingString = SubstituteVariable.substitute(
77                              buildingString, "${dbNameSuffix}", "");
78              }
79              catch (IOException e) {
80              }
81              try {
82                  if ((manager.getProps().getProperty(dbPrefix+"pathNeeded")).equals("true")) {
83                      if (dbDir != null) {
84                          buildingString = SubstituteVariable.substitute(buildingString, "${dbDir}", dbDir);
85                          buildingString = SubstituteVariable.substitute(buildingString, "${dbPathColon}", ":");
86                          buildingString = SubstituteVariable.substitute(buildingString, "${dbDirSlash}", "/");
87                      }
88                      else {
89                          buildingString = SubstituteVariable.substitute(buildingString, "${dbDir}", "");
90                          buildingString = SubstituteVariable.substitute(buildingString, "${dbPathColon}", "");
91                          buildingString = SubstituteVariable.substitute(buildingString, "${dbDirSlash}", "");
92                      }
93                  }
94              }
95              catch (IOException e) {
96                  buildingString = SubstituteVariable.substitute(buildingString, "${dbDir}", "");
97                  buildingString = SubstituteVariable.substitute(buildingString, "${dbPathColon}", "");
98                  buildingString = SubstituteVariable.substitute(buildingString, "${dbDirSlash}", "");
99              }
100             try {
101                 if (port <= 0) {
102                     if ((manager.getProps().getProperty(dbPrefix+"defaultPortNeeded")).equals("true")) {
103                         buildingString = SubstituteVariable.substitute(buildingString, "${port}",
104                             manager.getProps().getProperty(dbms+".defaultPort"));
105                         buildingString = SubstituteVariable.substitute(buildingString, "${portColon}", ":");
106                     }
107                     else {
108                         buildingString = SubstituteVariable.substitute(buildingString, "${port}", "");
109                         buildingString = SubstituteVariable.substitute(buildingString, "${portColon}", "");
110                     }
111                 }
112                 else {
113                     buildingString = SubstituteVariable.substitute(buildingString, "${port}", Integer.toString(port));
114                     buildingString = SubstituteVariable.substitute(buildingString, "${portColon}", ":");
115                 }
116             }
117             catch (IOException e) {
118                 buildingString = SubstituteVariable.substitute(buildingString, "${port}", "");
119                 buildingString = SubstituteVariable.substitute(buildingString, "${portColon}", "");
120             }
121             if (userName.equals("")) {
122                 buildingString = SubstituteVariable.substitute(buildingString, "${userName}", "");
123                 buildingString = SubstituteVariable.substitute(buildingString, "${password}", "");
124                 buildingString = SubstituteVariable.substitute(buildingString, "${userNameClause}", "");
125                 buildingString = SubstituteVariable.substitute(buildingString, "${userNameInterrogation}", "");
126                 buildingString = SubstituteVariable.substitute(buildingString, "${passwordClause}", "");
127                 buildingString = SubstituteVariable.substitute(buildingString, "${passwordAmpersand}", "");
128             }
129             else {
130                 try {
131                     userNameClause = manager.getProps().getProperty(dbPrefix+"userNameClause");
132                     passwordClause = manager.getProps().getProperty(dbPrefix+"passwordClause");
133                 }
134                 catch (IOException e) {
135                     throw new DbException(e.getMessage());
136                 }
137                 if (!userNameClause.equals("") && !passwordClause.equals("")) {
138                     buildingString = SubstituteVariable.substitute(buildingString, "${userName}", userName);
139                     buildingString = SubstituteVariable.substitute(buildingString, "${password}", password);
140                     buildingString = SubstituteVariable.substitute(buildingString, "${userNameClause}", userNameClause);
141                     buildingString = SubstituteVariable.substitute(buildingString, "${userNameInterrogation}", "?");
142                     buildingString = SubstituteVariable.substitute(buildingString, "${passwordClause}", passwordClause);
143                     buildingString = SubstituteVariable.substitute(buildingString, "${passwordAmpersand}", "&");
144                 }
145                 else {
146                     buildingString = SubstituteVariable.substitute(buildingString, "${userName}", "");
147                     buildingString = SubstituteVariable.substitute(buildingString, "${password}", "");
148                     buildingString = SubstituteVariable.substitute(buildingString, "${userNameClause}", "");
149                     buildingString = SubstituteVariable.substitute(buildingString, "${userNameInterrogation}", "");
150                     buildingString = SubstituteVariable.substitute(buildingString, "${passwordClause}", "");
151                     buildingString = SubstituteVariable.substitute(buildingString, "${passwordAmpersand}", "");
152                 }
153             }
154             if (buildingString.indexOf("${charSetAmpersand}") >= 0) {
155                 if (userName != null || userName.equals(""))
156                     buildingString = SubstituteVariable.substitute(buildingString, "${charSetAmpersand}", "&");
157                 else
158                     buildingString = SubstituteVariable.substitute(buildingString, "${charSetAmpersand}", "?");
159             }
160         }
161         return buildingString;
162     }
163 
164     /** Returns a connection string for given parameters
165      * @return The needed connection string.
166      * @param manager The manager for getting properties.
167      * @param dbms The name of DBMS used
168      * @param driver Name of the JDBC driver class
169      * @param dbmsAddress The address of the dbms
170      * @param port Port used for connection.
171      * Use <CODE>-1</CODE> if you want to use default port.
172      * @param dbName Name of the database to connect to.
173      * @param userName User Name to connect to the DBMS. Notice that this way you will create a connection string in which user name is specified! Then you have not to put it as a parameter when you connect to the DBMS.
174      * @param password Password for connection.
175      * @throws DbException If some parameter are wrong or DbManager not valid.
176      */    
177     public static String build(DbManager manager, String dbms, String driver, String dbmsAddress, int port, String dbName,
178     String userName, String password) throws DbException {
179         return build (manager, dbms, driver, dbmsAddress, port, null, dbName, userName, password);
180     }
181 }