View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0
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.apache.juddi.datastore.jdbc;
17  
18  import java.sql.Connection;
19  import java.sql.PreparedStatement;
20  import java.sql.ResultSet;
21  import java.sql.SQLException;
22  
23  import org.apache.commons.logging.Log;
24  import org.apache.commons.logging.LogFactory;
25  import org.apache.juddi.datatype.publisher.Publisher;
26  import org.apache.juddi.registry.RegistryEngine;
27  import org.apache.juddi.util.Config;
28  
29  /***
30   * @author Steve Viens (sviens@apache.org)
31   */
32  public class PublisherTable
33  {
34    // private reference to the jUDDI logger
35    private static Log log = LogFactory.getLog(PublisherTable.class);
36  
37    static String insertSQL = null;
38    static String selectSQL = null;
39    static String deleteSQL = null;
40    static String updateSQL = null;
41    static String verifyAdminSQL = null;
42    static String tablePrefix = "";
43    
44    static
45    {
46     tablePrefix = Config.getStringProperty(
47         RegistryEngine.PROPNAME_TABLE_PREFIX,RegistryEngine.DEFAULT_TABLE_PREFIX);
48      // buffer used to build SQL statements
49      StringBuffer sql = null;
50  
51      // build insertSQL
52      sql = new StringBuffer(150);
53      sql.append("INSERT INTO ").append(tablePrefix).append("PUBLISHER (");
54      sql.append("PUBLISHER_ID,");
55      sql.append("PUBLISHER_NAME,");
56      sql.append("EMAIL_ADDRESS,");
57      sql.append("IS_ADMIN, ");
58      sql.append("IS_ENABLED), ");
59      sql.append("MAX_BUSINESSES), ");
60      sql.append("MAX_SERVICES_PER_BUSINESS), ");
61      sql.append("MAX_BINDINGS_PER_SERVICE), ");
62      sql.append("MAX_TMODELS) ");
63      sql.append("VALUES (?,?,?,?,?,?,?,?,?)");
64      insertSQL = sql.toString();
65  
66      // build selectSQL
67      sql = new StringBuffer(200);
68      sql.append("SELECT ");
69      sql.append("PUBLISHER_NAME,");
70      sql.append("EMAIL_ADDRESS,");
71      sql.append("IS_ADMIN,");
72      sql.append("IS_ENABLED,");
73      sql.append("MAX_BUSINESSES,");
74      sql.append("MAX_SERVICES_PER_BUSINESS,");
75      sql.append("MAX_BINDINGS_PER_SERVICE,");
76      sql.append("MAX_TMODELS ");
77      sql.append("FROM ").append(tablePrefix).append("PUBLISHER ");
78      sql.append("WHERE PUBLISHER_ID=?");
79      selectSQL = sql.toString();
80  
81      // build deleteSQL
82      sql = new StringBuffer(200);
83      sql.append("DELETE FROM ").append(tablePrefix).append("PUBLISHER ");
84      sql.append("WHERE PUBLISHER_ID=?");
85      deleteSQL = sql.toString();
86  
87      // build updateSQL
88      sql = new StringBuffer(200);
89      sql.append("UPDATE ").append(tablePrefix).append("PUBLISHER ");
90      sql.append("SET PUBLISHER_NAME=?,");
91      sql.append("EMAIL_ADDRESS=?,");
92      sql.append("IS_ADMIN=?,");
93      sql.append("IS_ENABLED=?,");
94      sql.append("MAX_BUSINESSES=?,");
95      sql.append("MAX_SERVICES_PER_BUSINESS=?,");
96      sql.append("MAX_BINDINGS_PER_SERVICE=?,");
97      sql.append("MAX_TMODELS=? ");
98      sql.append("WHERE PUBLISHER_ID=?");
99      updateSQL = sql.toString();
100   }
101 
102   /***
103    * Insert new row into the PUBLISHER table.
104    *
105    * @param publisher
106    * @param connection JDBC connection
107    * @throws SQLException
108    */
109   public static void insert(Publisher publisher,Connection connection)
110     throws SQLException
111   {
112     if (publisher == null)
113       return; // nothing to insert
114 
115     PreparedStatement statement = null;
116 
117     try
118     {
119       statement = connection.prepareStatement(insertSQL);
120       statement.setString(1,publisher.getPublisherID());
121       statement.setString(2,publisher.getName());
122       statement.setString(3,publisher.getEmailAddress());
123       statement.setString(4,String.valueOf(publisher.isAdmin()));
124       statement.setString(5,String.valueOf(publisher.isEnabled()));
125       statement.setInt(6,publisher.getMaxBusinesses());
126       statement.setInt(7,publisher.getMaxServicesPerBusiness());
127       statement.setInt(8,publisher.getMaxBindingsPerService());
128       statement.setInt(9,publisher.getMaxTModels());
129       
130       if (log.isDebugEnabled()) {
131           log.debug("insert into " + tablePrefix + "PUBLISHER table:\n\n\t" + insertSQL +
132             "\n\t PUBLISHER_ID=" + publisher.getPublisherID() +
133             "\n\t PUBLISHER_NAME=" + publisher.getName() +
134             "\n\t EMAIL_ADDRESS=" + publisher.getEmailAddress() +
135             "\n\t IS_ADMIN=" + publisher.isAdmin() +
136             "\n\t IS_ENABLED=" + publisher.isEnabled() +
137             "\n\t MAX_BUSINESSES=" + publisher.getMaxBusinesses() +
138             "\n\t MAX_SERVICES_PER_BUSINESS=" + publisher.getMaxServicesPerBusiness() +
139             "\n\t MAX_BINDINGS_PER_SERVICE=" + publisher.getMaxBindingsPerService() +
140             "\n\t MAX_TMODELS=" + publisher.getMaxTModels() + "\n");
141       }
142 
143       // insert
144       statement.executeUpdate();
145     }
146     catch(SQLException sqlex)
147     {
148       log.error(sqlex.getMessage());
149       throw sqlex;
150     }
151     finally
152     {
153       try { statement.close(); } catch (Exception e) { /* ignored */ }
154     }
155   }
156 
157   /***
158    * Select one row from the PUBLISHER table.
159    *
160    * @param publisherID
161    * @param connection JDBC connection
162    * @return Publisher
163    * @throws SQLException
164    */
165   public static Publisher select(String publisherID,Connection connection)
166     throws SQLException
167   {
168     // return 'null' if a null publisherID is specified.
169     if (publisherID == null)
170       return null;
171 
172     Publisher publisher = null;
173     PreparedStatement statement = null;
174     ResultSet resultSet = null;
175 
176     try
177     {
178       statement = connection.prepareStatement(selectSQL);
179       statement.setString(1,publisherID);
180 
181       if (log.isDebugEnabled()) {
182           log.debug("select from " + tablePrefix + "PUBLISHER table:\n\n\t" + selectSQL +
183             "\n\t PUBLISHER_ID=" + publisherID + "\n");
184       }
185 
186       resultSet = statement.executeQuery();
187       if (resultSet.next())
188       {
189         publisher = new Publisher();
190         publisher.setPublisherID(publisherID);
191         publisher.setName(resultSet.getString(1));//("PUBLISHER_NAME"));
192         publisher.setEmailAddress(resultSet.getString(2));//("EMAIL_ADDRESS"));
193         publisher.setAdminValue(resultSet.getString(3));//("IS_ADMIN"));
194         publisher.setEnabledValue(resultSet.getString(4));//("IS_ENABLED"));
195         publisher.setMaxBusinesses(resultSet.getInt(5));//("MAX_BUSINESSES"));
196         publisher.setMaxServicesPerBusiness(resultSet.getInt(6));//("MAX_SERVICES_PER_BUSINESS"));
197         publisher.setMaxBindingsPerService(resultSet.getInt(7));//("MAX_BINDINGS_PER_SERVICE"));
198         publisher.setMaxTModels(resultSet.getInt(8));//("MAX_TMODELS"));      
199       }
200 
201       return publisher;
202     }
203     catch(SQLException sqlex)
204     {
205       log.error(sqlex.getMessage());
206       throw sqlex;
207     }
208     finally
209     {
210       try { resultSet.close(); } catch (Exception e) { /* ignored */ }
211       try { statement.close(); } catch (Exception e) { /* ignored */ }
212     }
213   }
214 
215   /***
216    * Delete row from the PUBLISHER table.
217    *
218    * @param publisherID
219    * @param connection
220    * @throws SQLException
221    */
222   public static void delete(String publisherID,Connection connection)
223     throws SQLException
224   {
225     PreparedStatement statement = null;
226 
227     try
228     {
229       // prepare the delete
230       statement = connection.prepareStatement(deleteSQL);
231       statement.setString(1,publisherID);
232 
233       if (log.isDebugEnabled()) {
234           log.debug("delete from " + tablePrefix + "PUBLISHER table:\n\n\t" + deleteSQL +
235             "\n\t PUBLISHER_ID=" + "\n");
236       }
237 
238       // execute the delete
239       statement.executeUpdate();
240     }
241     catch(SQLException sqlex)
242     {
243       log.error(sqlex.getMessage());
244       throw sqlex;
245     }
246     finally
247     {
248       try { statement.close(); } catch (Exception e) { /* ignored */ }
249     }
250   }
251 
252   /***
253    * Update the PUBLISHER table for a particular PublisherID.
254    *
255    * @param publisher
256    * @param connection JDBC connection
257    * @throws SQLException
258    */
259   public static void update(Publisher publisher,Connection connection)
260     throws SQLException
261   {
262     PreparedStatement statement = null;
263 
264     try
265     {
266       // prepare
267       statement = connection.prepareStatement(updateSQL);
268       statement.setString(1,publisher.getName());
269       statement.setString(2,publisher.getEmailAddress());
270       statement.setString(3,String.valueOf(publisher.isAdmin()));
271       statement.setString(4,String.valueOf(publisher.isEnabled()));      
272       statement.setInt(5,publisher.getMaxBusinesses());
273       statement.setInt(6,publisher.getMaxServicesPerBusiness());
274       statement.setInt(7,publisher.getMaxBindingsPerService());
275       statement.setInt(8,publisher.getMaxTModels());
276       statement.setString(9,publisher.getPublisherID());
277 
278       if (log.isDebugEnabled()) {
279           log.debug("update " + tablePrefix + "PUBLISHER table:\n\n\t" + updateSQL +
280             "\n\t PUBLISHER_NAME=" + publisher.getName() +
281             "\n\t EMAIL_ADDRESS=" + publisher.getEmailAddress() +
282             "\n\t IS_ADMIN=" + publisher.isAdmin() +
283             "\n\t IS_ENABLED=" + publisher.isEnabled() +
284             "\n\t MAX_BUSINESSES=" + publisher.getMaxBusinesses() +
285             "\n\t MAX_SERVICES_PER_BUSINESS=" + publisher.getMaxServicesPerBusiness() +
286             "\n\t MAX_BINDINGS_PER_SERVICE=" + publisher.getMaxBindingsPerService() +
287             "\n\t MAX_TMODELS=" + publisher.getMaxTModels() +       
288             "\n\t PUBLISHER_ID=" + publisher.getPublisherID() + "\n");
289       }
290       
291       // execute
292       statement.executeUpdate();
293     }
294     catch(SQLException sqlex)
295     {
296       log.error(sqlex.getMessage());
297       throw sqlex;
298     }
299     finally
300     {
301       try { statement.close(); } catch (Exception e) { /* ignored */ }
302     }
303   }
304 }