00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 package org.objectweb.cjdbc.console.text.commands.dbadmin;
00026
00027 import java.util.ArrayList;
00028 import java.util.StringTokenizer;
00029
00030 import org.objectweb.cjdbc.common.i18n.ConsoleTranslate;
00031 import org.objectweb.cjdbc.common.jmx.mbeans.DatabaseBackendMBean;
00032 import org.objectweb.cjdbc.console.text.module.VirtualDatabaseAdmin;
00033
00034
00035
00036
00037
00038
00039
00040 public class ShowBackendState extends AbstractAdminCommand
00041 {
00042
00043
00044
00045
00046
00047
00048 public ShowBackendState(VirtualDatabaseAdmin module)
00049 {
00050 super(module);
00051 }
00052
00053
00054
00055
00056 public void parse(String commandText) throws Exception
00057 {
00058 if (commandText == null || commandText.trim().equals(""))
00059 {
00060 console.printError(ConsoleTranslate
00061 .get("admin.command.showbackend.state.no.input"));
00062 return;
00063 }
00064 StringTokenizer st = new StringTokenizer(commandText);
00065
00066 String backendName = st.nextToken();
00067
00068 if (!jmxClient.getVirtualDatabaseProxy(dbName, user, password)
00069 .getAllBackendNames().contains(backendName))
00070 console.printError(ConsoleTranslate.get(
00071 "admin.command.showbackend.state.invalid.backend", backendName));
00072
00073 int count = 0;
00074 if (st.hasMoreTokens())
00075 {
00076 try
00077 {
00078 count = Integer.parseInt(st.nextToken());
00079 }
00080 catch (NumberFormatException e)
00081 {
00082 }
00083 }
00084 boolean fromFirst = true;
00085 if (st.hasMoreTokens())
00086 fromFirst = Boolean.valueOf(st.nextToken()).booleanValue();
00087 boolean clone = false;
00088 if (st.hasMoreTokens())
00089 clone = Boolean.valueOf(st.nextToken()).booleanValue();
00090
00091 console.println(ConsoleTranslate.get(
00092 "admin.command.showbackend.state.echo", new Object[]{backendName,
00093 String.valueOf(count), String.valueOf(fromFirst),
00094 String.valueOf(clone)}));
00095 DatabaseBackendMBean db = jmxClient.getDatabaseBackendProxy(dbName,
00096 backendName, user, password);
00097
00098 ArrayList list = db.getActiveTransactions();
00099 console.printInfo(ConsoleTranslate
00100 .get("admin.command.showbackend.state.state"));
00101 console.println(db.getState());
00102 console.printInfo(ConsoleTranslate
00103 .get("admin.command.showbackend.state.active.transactions"));
00104 for (int i = 0; i < list.size(); i++)
00105 {
00106 if (i != 0)
00107 console.print(",");
00108 console.print(list.get(i).toString());
00109 }
00110 console.println();
00111 console.printInfo(ConsoleTranslate
00112 .get("admin.command.showbackend.state.pending.requests"));
00113 try
00114 {
00115 list = db.getPendingRequestsDescription(count, fromFirst, clone);
00116 for (int i = 0; i < list.size(); i++)
00117 console.println((String) list.get(i));
00118 }
00119 catch (Exception e)
00120 {
00121 e.printStackTrace();
00122 }
00123 }
00124
00125
00126
00127
00128 public String getCommandName()
00129 {
00130 return "showbackend";
00131 }
00132
00133
00134
00135
00136 public String getCommandDescription()
00137 {
00138 return ConsoleTranslate.get("admin.command.showbackend.state");
00139 }
00140
00141
00142
00143
00144 public String getCommandParameters()
00145 {
00146 return "<backendName> [<count>] [<fromFirst>] [<clone>]";
00147 }
00148 }