KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > continuent > sequoia > controller > backend > management > DatabaseBackend


1 /**
2  * Sequoia: Database clustering technology.
3  * Copyright (C) 2005 Emic Networks.
4  * Contact: sequoia@continuent.org
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * Initial developer(s): Jeff Mesnil.
19  * Contributor(s): ______________________.
20  */

21
22 package org.continuent.sequoia.controller.backend.management;
23
24 import java.util.ArrayList JavaDoc;
25 import java.util.HashMap JavaDoc;
26 import java.util.HashSet JavaDoc;
27 import java.util.Iterator JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.Set JavaDoc;
30
31 import javax.management.NotCompliantMBeanException JavaDoc;
32
33 import org.continuent.sequoia.common.i18n.Translate;
34 import org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean;
35 import org.continuent.sequoia.controller.jmx.AbstractStandardMBean;
36 import org.continuent.sequoia.controller.locks.TransactionLogicalLock;
37 import org.continuent.sequoia.controller.sql.schema.DatabaseColumn;
38 import org.continuent.sequoia.controller.sql.schema.DatabaseTable;
39
40 /**
41  * This class defines a DatabaseBackend MBean.
42  *
43  * @author <a HREF="mailto:emmanuel.cecchet@emicnetworks.com">Emmanuel Cecchet</a>
44  * @version 1.0
45  */

46 public class DatabaseBackend extends AbstractStandardMBean
47     implements
48       DatabaseBackendMBean
49 {
50   private org.continuent.sequoia.controller.backend.DatabaseBackend managedBackend;
51
52   /**
53    * Creates a new Managed <code>DatabaseBackend</code> object
54    *
55    * @param managedBackend the backend that is managed
56    * @throws NotCompliantMBeanException if this MBean is not JMX compliant
57    */

58   public DatabaseBackend(
59       org.continuent.sequoia.controller.backend.DatabaseBackend managedBackend)
60       throws NotCompliantMBeanException JavaDoc
61   {
62     super(DatabaseBackendMBean.class);
63     this.managedBackend = managedBackend;
64   }
65
66   /**
67    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#isInitialized()
68    */

69   public boolean isInitialized() throws Exception JavaDoc
70   {
71     return managedBackend.isInitialized();
72   }
73
74   /**
75    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#isReadEnabled()
76    */

77   public boolean isReadEnabled()
78   {
79     return managedBackend.isReadEnabled();
80   }
81
82   /**
83    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#isWriteEnabled()
84    */

85   public boolean isWriteEnabled()
86   {
87     return managedBackend.isWriteEnabled();
88   }
89
90   /**
91    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#isDisabled()
92    */

93   public boolean isDisabled()
94   {
95     return managedBackend.isDisabled();
96   }
97
98   /**
99    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#enableRead()
100    */

101   public void enableRead()
102   {
103     managedBackend.enableRead();
104   }
105
106   /**
107    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#enableWrite()
108    */

109   public void enableWrite()
110   {
111     managedBackend.enableWrite();
112   }
113
114   /**
115    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#disableRead()
116    */

117   public void disableRead()
118   {
119     managedBackend.disableRead();
120   }
121
122   /**
123    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#disableWrite()
124    */

125   public void disableWrite()
126   {
127     managedBackend.disableWrite();
128   }
129
130   /**
131    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#disable()
132    */

133   public void disable()
134   {
135     managedBackend.disable();
136   }
137
138   /**
139    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getConnectionTestStatement()
140    */

141   public String JavaDoc getConnectionTestStatement()
142   {
143     return managedBackend.getConnectionTestStatement();
144   }
145
146   /**
147    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getDriverClassName()
148    */

149   public String JavaDoc getDriverClassName()
150   {
151     return managedBackend.getDriverClassName();
152   }
153
154   /**
155    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getName()
156    */

157   public String JavaDoc getName()
158   {
159     return managedBackend.getName();
160   }
161
162   /**
163    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getState()
164    */

165   public String JavaDoc getState()
166   {
167     return managedBackend.getState();
168   }
169
170   /**
171    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getStateValue()
172    */

173   public int getStateValue()
174   {
175     return managedBackend.getStateValue();
176   }
177
178   /**
179    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getPendingRequestsDescription(int,
180    * boolean, boolean)
181    */

182   public List JavaDoc getPendingRequestsDescription(int count, boolean fromFirst,
183       boolean clone)
184   {
185     return managedBackend
186         .getPendingRequestsDescription(count, fromFirst, clone);
187   }
188
189   /**
190    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getActiveTransactions()
191    */

192   public List JavaDoc getActiveTransactions()
193   {
194     return managedBackend.getActiveTransactions();
195   }
196
197   /**
198    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getURL()
199    */

200   public String JavaDoc getURL()
201   {
202     return managedBackend.getURL();
203   }
204
205   /**
206    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getTablesNames()
207    */

208   public String JavaDoc[] getTablesNames()
209   {
210     Set JavaDoc uniqueValues = new HashSet JavaDoc(managedBackend.getTables());
211     Object JavaDoc[] tables = uniqueValues.toArray();
212     String JavaDoc[] res = new String JavaDoc[tables.length];
213     for (int i = 0; i < tables.length; i++)
214     {
215       DatabaseTable table = (DatabaseTable) tables[i];
216       String JavaDoc fqtn = table.getSchema() + "." + table.getName(); //$NON-NLS-1$
217
res[i] = fqtn;
218     }
219     return res;
220   }
221
222   /**
223    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getColumnsNames(String)
224    */

225   public String JavaDoc[] getColumnsNames(String JavaDoc tableName)
226   {
227     DatabaseTable theTable = getTable(tableName);
228
229     if (theTable == null)
230       return null;
231     // throw new VirtualDatabaseException("no such table");
232

233     ArrayList JavaDoc l = theTable.getColumns();
234
235     String JavaDoc[] ret = new String JavaDoc[l.size()];
236
237     for (int i = 0; i < ret.length; i++)
238     {
239       DatabaseColumn column = (DatabaseColumn) l.get(i);
240       ret[i] = column.getName();
241     }
242     return ret;
243   }
244
245   /**
246    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getLockInfo(String)
247    */

248   public String JavaDoc getLockInfo(String JavaDoc tableName)
249   {
250     DatabaseTable theTable = getTable(tableName);
251     if (theTable == null)
252       return null;
253     TransactionLogicalLock tll = theTable.getLock();
254     if (tll.isLocked())
255     {
256       return Translate.get("backend.locker", tll.getLocker()); //$NON-NLS-1$
257
// FIXME: print waiting list ?
258
}
259     else
260     {
261       return Translate.get("backend.no.lock"); //$NON-NLS-1$
262
}
263   }
264
265   /**
266    * Retrieves a table from its fully qualified name.
267    *
268    * @param tableName table name under the for <code><schema>.<table></code>
269    * @return the corresponding table in the current backend
270    */

271   private DatabaseTable getTable(String JavaDoc tableName)
272   {
273     Set JavaDoc uniqueValues = new HashSet JavaDoc(managedBackend.getTables());
274     Object JavaDoc[] tables = uniqueValues.toArray();
275
276     DatabaseTable theTable = null;
277     for (int i = 0; i < tables.length; i++)
278     {
279       DatabaseTable table = (DatabaseTable) tables[i];
280       String JavaDoc fqtn = table.getSchema() + "." + table.getName(); //$NON-NLS-1$
281
if (fqtn.equals(tableName))
282       {
283         theTable = table;
284         break;
285       }
286     }
287     return theTable;
288   }
289
290   /**
291    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getStoredProceduresNames()
292    */

293   public String JavaDoc[] getStoredProceduresNames()
294   {
295     HashMap JavaDoc hm = managedBackend.getDatabaseSchema().getProcedures();
296     Set JavaDoc keys = hm.keySet();
297     String JavaDoc[] res = new String JavaDoc[keys.size()];
298     int i = 0;
299     for (Iterator JavaDoc iter = keys.iterator(); iter.hasNext(); i++)
300     {
301       res[i] = (String JavaDoc) iter.next();
302     }
303     return res;
304   }
305
306   /**
307    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getDriverPath()
308    */

309   public String JavaDoc getDriverPath()
310   {
311     return managedBackend.getDriverPath();
312   }
313
314   /**
315    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getLastKnownCheckpoint()
316    */

317   public String JavaDoc getLastKnownCheckpoint()
318   {
319     return managedBackend.getLastKnownCheckpoint();
320   }
321
322   /**
323    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#isJDBCConnected()
324    */

325   public boolean isJDBCConnected()
326   {
327     return managedBackend.isJDBCConnected();
328   }
329
330   /**
331    * @see org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean#getXml()
332    */

333   public String JavaDoc getXml()
334   {
335     return managedBackend.getXml();
336   }
337
338   /**
339    * @see org.continuent.sequoia.controller.jmx.AbstractStandardMBean#getAssociatedString()
340    */

341   public String JavaDoc getAssociatedString()
342   {
343     return "backend"; //$NON-NLS-1$
344
}
345
346 }
347
Popular Tags