diff options
Diffstat (limited to 'trunk/qpid/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java')
-rw-r--r-- | trunk/qpid/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/trunk/qpid/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java b/trunk/qpid/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java new file mode 100644 index 0000000000..cdbb8f1d4f --- /dev/null +++ b/trunk/qpid/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java @@ -0,0 +1,199 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.qpid.commands; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Iterator; +import java.util.Set; +import java.util.StringTokenizer; + +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; + +import org.apache.qpid.commands.objects.QueueObject; +import org.apache.qpid.utils.JMXinfo; + +public class Commanddelete extends CommandImpl +{ + private int number = 0; + private QueueObject objname; + private MBeanServerConnection mbsc; + private String method1, method2; + private ObjectName queue; + public static final String COMMAND_NAME = "delete"; + + public Commanddelete(JMXinfo info) + { + super(info); + this.mbsc = info.getmbserverconnector(); + this.objname = new QueueObject(mbsc); + this.method1 = "deleteMessageFromTop"; + this.method2 = "clearQueue"; + + } + + public void deletemessages() + { + Set set = null; + objname.setQueryString(this.getObject(), this.getName(), this.getVirtualhost()); + set = objname.returnObjects(); + + if (objname.getSet().size() != 0) + { + Iterator it = set.iterator(); + this.queue = (ObjectName) it.next(); + try + { + if (this.number == 0) + { + echo(""); + System.out.print("Do you want to delete all the messages from the Queue [Y/N] :"); + InputStreamReader isr = new InputStreamReader(System.in); + BufferedReader br = new BufferedReader(isr); + String s = br.readLine(); + echo(s); + if (s.compareToIgnoreCase("y") == 0) + this.mbsc.invoke(queue, this.method2, null, null); + else + return; + } + else if (objname.getmessagecount(this.queue) < this.number) + { + echo("Given number is Greater than the Queue Depth"); + return; + } + else + { + for (int i = 0; i < this.number; i++) + { + this.mbsc.invoke(queue, this.method1, null, null); + } + } + } + catch (Exception ex) + { + ex.printStackTrace(); + } + + } + else + { + if (hasName()) + { + + echo("The Queue you have specified is not in the current broker"); + echo(""); + } + else + { + printusage(); + } + } + } + + public void execute() + { + /* + * In here you it's easy to handle any number of otpions which are going + * to add with the list command which works with main option object or o + */ + + if (checkoptionsetting("object") || checkoptionsetting("o")) + { + String object = optionchecker("object"); + if (object == null) + { + object = optionchecker("o"); + } + if (object.compareToIgnoreCase("queue") == 0) + setObject(object); + else + { + unrecognizeoption(); + echo("This command is only applicable for delete command so please start with queue"); + } + if (checkoptionsetting("name") || checkoptionsetting("n")) + { + String name = optionchecker("name"); + if (name == null) + name = optionchecker("n"); + + setName(name); + } + if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) + { + String vhost = optionchecker("virtualhost"); + if (vhost == null) + vhost = optionchecker("v"); + setVirtualhost(vhost); + } + if (checkoptionsetting("top") || checkoptionsetting("t")) + { + String number = optionchecker("top"); + if (number == null) + number = optionchecker("t"); + + setnumber(removeSpaces(number)); + } + this.deletemessages(); + } + else if (checkoptionsetting("h") || checkoptionsetting("help")) + printusage(); + else + unrecognizeoption(); + } + + public void printusage() + { + echo(""); + echo("Usage:delete [OPTION] ... [OBJECT TYPE]...\n"); + echo("Delete the top most messages from the given queue object\n"); + echo("To specify the desired queue you have to give the virtualhost name and the queue name with following commands\n"); + echo("Where possible options include:\n"); + echo(" -v --virtualhost Give the virtuallhost name of the desired queue"); + echo(" -n --name Give the queue name of the desired queue you want to do the delete operation"); + echo(" -t --top Give how many number of messages you want to delete from the top (Default = all the messages will be deleted"); + echo(" -h --help Display the help and back to the qpid-cli prompt\n"); + + } + + private void setnumber(String number) + { + Integer i = new Integer(number); + this.number = i.intValue(); + } + + public int getnumber() + { + return this.number; + } + + private static String removeSpaces(String s) + { + StringTokenizer st = new StringTokenizer(s, " ", false); + String t = ""; + while (st.hasMoreElements()) + t += st.nextElement(); + return t; + } +} |