1 21 22 package org.continuent.sequoia.controller.backend.management; 23 24 import java.util.ArrayList ; 25 import java.util.HashMap ; 26 import java.util.HashSet ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.Set ; 30 31 import javax.management.NotCompliantMBeanException ; 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 46 public class DatabaseBackend extends AbstractStandardMBean 47 implements 48 DatabaseBackendMBean 49 { 50 private org.continuent.sequoia.controller.backend.DatabaseBackend managedBackend; 51 52 58 public DatabaseBackend( 59 org.continuent.sequoia.controller.backend.DatabaseBackend managedBackend) 60 throws NotCompliantMBeanException 61 { 62 super(DatabaseBackendMBean.class); 63 this.managedBackend = managedBackend; 64 } 65 66 69 public boolean isInitialized() throws Exception 70 { 71 return managedBackend.isInitialized(); 72 } 73 74 77 public boolean isReadEnabled() 78 { 79 return managedBackend.isReadEnabled(); 80 } 81 82 85 public boolean isWriteEnabled() 86 { 87 return managedBackend.isWriteEnabled(); 88 } 89 90 93 public boolean isDisabled() 94 { 95 return managedBackend.isDisabled(); 96 } 97 98 101 public void enableRead() 102 { 103 managedBackend.enableRead(); 104 } 105 106 109 public void enableWrite() 110 { 111 managedBackend.enableWrite(); 112 } 113 114 117 public void disableRead() 118 { 119 managedBackend.disableRead(); 120 } 121 122 125 public void disableWrite() 126 { 127 managedBackend.disableWrite(); 128 } 129 130 133 public void disable() 134 { 135 managedBackend.disable(); 136 } 137 138 141 public String getConnectionTestStatement() 142 { 143 return managedBackend.getConnectionTestStatement(); 144 } 145 146 149 public String getDriverClassName() 150 { 151 return managedBackend.getDriverClassName(); 152 } 153 154 157 public String getName() 158 { 159 return managedBackend.getName(); 160 } 161 162 165 public String getState() 166 { 167 return managedBackend.getState(); 168 } 169 170 173 public int getStateValue() 174 { 175 return managedBackend.getStateValue(); 176 } 177 178 182 public List getPendingRequestsDescription(int count, boolean fromFirst, 183 boolean clone) 184 { 185 return managedBackend 186 .getPendingRequestsDescription(count, fromFirst, clone); 187 } 188 189 192 public List getActiveTransactions() 193 { 194 return managedBackend.getActiveTransactions(); 195 } 196 197 200 public String getURL() 201 { 202 return managedBackend.getURL(); 203 } 204 205 208 public String [] getTablesNames() 209 { 210 Set uniqueValues = new HashSet (managedBackend.getTables()); 211 Object [] tables = uniqueValues.toArray(); 212 String [] res = new String [tables.length]; 213 for (int i = 0; i < tables.length; i++) 214 { 215 DatabaseTable table = (DatabaseTable) tables[i]; 216 String fqtn = table.getSchema() + "." + table.getName(); res[i] = fqtn; 218 } 219 return res; 220 } 221 222 225 public String [] getColumnsNames(String tableName) 226 { 227 DatabaseTable theTable = getTable(tableName); 228 229 if (theTable == null) 230 return null; 231 233 ArrayList l = theTable.getColumns(); 234 235 String [] ret = new String [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 248 public String getLockInfo(String 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()); } 259 else 260 { 261 return Translate.get("backend.no.lock"); } 263 } 264 265 271 private DatabaseTable getTable(String tableName) 272 { 273 Set uniqueValues = new HashSet (managedBackend.getTables()); 274 Object [] 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 fqtn = table.getSchema() + "." + table.getName(); if (fqtn.equals(tableName)) 282 { 283 theTable = table; 284 break; 285 } 286 } 287 return theTable; 288 } 289 290 293 public String [] getStoredProceduresNames() 294 { 295 HashMap hm = managedBackend.getDatabaseSchema().getProcedures(); 296 Set keys = hm.keySet(); 297 String [] res = new String [keys.size()]; 298 int i = 0; 299 for (Iterator iter = keys.iterator(); iter.hasNext(); i++) 300 { 301 res[i] = (String ) iter.next(); 302 } 303 return res; 304 } 305 306 309 public String getDriverPath() 310 { 311 return managedBackend.getDriverPath(); 312 } 313 314 317 public String getLastKnownCheckpoint() 318 { 319 return managedBackend.getLastKnownCheckpoint(); 320 } 321 322 325 public boolean isJDBCConnected() 326 { 327 return managedBackend.isJDBCConnected(); 328 } 329 330 333 public String getXml() 334 { 335 return managedBackend.getXml(); 336 } 337 338 341 public String getAssociatedString() 342 { 343 return "backend"; } 345 346 } 347 | Popular Tags |