1 21 22 package org.continuent.sequoia.console.text.commands.dbadmin; 23 24 import java.util.StringTokenizer ; 25 26 import org.continuent.sequoia.common.i18n.ConsoleTranslate; 27 import org.continuent.sequoia.common.jmx.mbeans.DatabaseBackendMBean; 28 import org.continuent.sequoia.console.text.module.VirtualDatabaseAdmin; 29 30 33 public class DumpBackendSchema extends AbstractAdminCommand 34 { 35 36 41 public DumpBackendSchema(VirtualDatabaseAdmin module) 42 { 43 super(module); 44 } 45 46 49 public void parse(String commandText) throws Exception  50 { 51 53 StringTokenizer st = new StringTokenizer (commandText.trim()); 54 String backendName; 55 String tableName = null; 56 boolean dumpColumns = false; 57 boolean dumpLocks = false; 58 if (st.countTokens() == 0 || st.countTokens() > 4) 59 { 60 console.printError(getUsage()); 61 return; 62 } 63 64 backendName = st.nextToken(); 65 while (st.hasMoreTokens()) 66 { 67 String token = st.nextToken(); 68 69 if ("/columns".equals(token)) 70 dumpColumns = true; 71 else if ("/locks".equals(token)) 72 dumpLocks = true; 73 else 74 tableName = token; 75 } 76 77 DatabaseBackendMBean dbMbean = jmxClient.getDatabaseBackendProxy(dbName, 78 backendName, user, password); 79 80 if (tableName == null) 81 { 82 String [] names = dbMbean.getTablesNames(); 83 for (int i = 0; i < names.length; i++) 84 { 85 printTable(names[i], dumpColumns, dumpLocks, dbMbean); 86 } 87 } 88 else 89 { 90 printTable(tableName, dumpColumns, dumpLocks, dbMbean); 91 } 92 } 93 94 private void printTable(String tableName, boolean dumpColumns, 95 boolean dumpLocks, DatabaseBackendMBean dbMbean) 96 { 97 console.println(tableName); 98 if (dumpColumns) 99 printColumnNames(dbMbean, tableName); 100 if (dumpLocks) 101 printLocks(dbMbean, tableName); 102 } 103 104 private void printLocks(DatabaseBackendMBean dbMbean, String tableName) 105 { 106 console.println(dbMbean.getLockInfo(tableName)); 107 } 108 109 private void printColumnNames(DatabaseBackendMBean dbMbean, String tableName) 110 { 111 String [] columns = dbMbean.getColumnsNames(tableName); 112 113 if (columns == null) 114 { 115 console.printError(ConsoleTranslate.get("DumpBackendSchema.noSuchTable", 116 tableName)); 117 return; 118 } 119 120 for (int j = 0; j < columns.length; j++) 121 console.println(" " + columns[j]); 122 } 123 124 127 public String getCommandName() 128 { 129 130 return "dump backend schema"; } 132 133 136 public String getCommandParameters() 137 { 138 return ConsoleTranslate.get("DumpBackendSchema.params"); } 140 141 144 public String getCommandDescription() 145 { 146 return ConsoleTranslate.get("DumpBackendSchema.description"); } 148 } 149 | Popular Tags |