blob: 1432f18018e2cc8118d2b3ed8d4a8b348421d9d5 [file] [log] [blame]
/*
*
* 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.objects;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.management.Attribute;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import org.apache.qpid.management.common.mbeans.ManagedQueue;
public class ObjectNames
{
public String querystring = null;
public MBeanServerConnection mbsc;
public Set<ObjectName> set = null;
public String attributes = "";
public String attributevalues = "";// = null;
private static final Map<String,Integer> QUEUE_ATTRIBUTES = new HashMap<String,Integer>();
static
{
QUEUE_ATTRIBUTES.put(ManagedQueue.ATTR_NAME, 1);
QUEUE_ATTRIBUTES.put(ManagedQueue.ATTR_DURABLE, 2);
QUEUE_ATTRIBUTES.put(ManagedQueue.ATTR_ACTIVE_CONSUMER_COUNT, 3);
QUEUE_ATTRIBUTES.put(ManagedQueue.ATTR_MSG_COUNT, 4);
QUEUE_ATTRIBUTES.put(ManagedQueue.ATTR_RCVD_MSG_COUNT, 5);
}
public ObjectNames(MBeanServerConnection mbsc)
{
this.mbsc = mbsc;
}
public Set<ObjectName> returnObjects()
{
try
{
set = mbsc.queryNames(new ObjectName(querystring), null);
}
catch (Exception ex)
{
ex.printStackTrace();
}
return set;
}
public void echo(String str)
{
System.out.println(str);
}
/* display appropriate objects according to the ojbect type */
public void displayobjects(String output, String seperator)
{
Iterator it = set.iterator();
String line = "";
String temp2 = "";
int iterator = 0;
try
{
do
{
ObjectName temp_object = null;
if (it.hasNext())
{
temp_object = (ObjectName) it.next();
if (temp_object == null)
System.out.println("null test");
}
// echo(temp_object.getCanonicalKeyPropertyListString());
MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
if (attr_info == null)
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
if (output == null)
echo(temp);
}
else
{
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
try
{
String temp1 = attr.getName();
if (output == null)
{
while (temp1.length() < 15)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
}
else if (output.compareToIgnoreCase("csv") == 0)
attributes = attributes + temp1 + seperator;
else
{
echo("Wrong output format current version is supporting only for CSV");
return;
}
}
catch (Exception x)
{
x.printStackTrace();
}
}
if (attributes.equalsIgnoreCase(""))
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
echo(temp);
echo("There are no attributes for this object Type");
continue;
}
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
temp2 = null;
try
{
toWrite = mbsc.getAttribute(temp_object, attr.getName());
}
catch (Exception x)
{
temp2 = "-";
}
if (toWrite != null)
temp2 = toWrite.toString();
else
temp2 = "-";
if (output == null)
{
while (temp2.length() < 15)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
}
else if (output.compareToIgnoreCase("csv") == 0)
attributevalues = attributevalues + temp2 + seperator;
// echo(temp1 + " " + temp2 + " " + temp3);
}
}
iterator++;
if (iterator == 1)
{
echo(attributes);
for (int i = 0; i < attributes.length(); i++)
line = line + "-";
if (output == null)
echo(line);
}
echo(attributevalues);
line = "";
attributes = "";
attributevalues = "";
} while (it.hasNext());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void reportgenerator(String output, String seperator, List<String> column)
{
Iterator it = set.iterator();
String line = "";
String temp2 = "";
int iterator = 0;
try
{
do
{
ObjectName temp_object = null;
if (it.hasNext())
{
temp_object = (ObjectName) it.next();
if (temp_object == null)
System.out.println("null test");
}
// echo(temp_object.getCanonicalKeyPropertyListString());
MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
if (attr_info == null)
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
if (output == null)
echo(temp);
}
else
{
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
try
{
String temp1 = attr.getName();
if (column.contains(temp1))
{
if (output == null)
{
while (temp1.length() < 15)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
}
else if (output.compareToIgnoreCase("csv") == 0)
attributes = attributes + temp1 + seperator;
else
{
echo("Wrong output format current version is supporting only for CSV");
return;
}
}
}
catch (Exception x)
{
x.printStackTrace();
}
}
if (attributes.equalsIgnoreCase(""))
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
echo(temp);
echo("There are no attributes for this object Type");
return;
}
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
temp2 = null;
if (column.contains(attr.getName()))
{
try
{
toWrite = mbsc.getAttribute(temp_object, attr.getName());
}
catch (Exception x)
{
temp2 = "-";
}
if (toWrite != null)
temp2 = toWrite.toString();
else
temp2 = "-";
if (output == null)
{
while (temp2.length() < 15)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
}
else if (output.compareToIgnoreCase("csv") == 0)
attributevalues = attributevalues + temp2 + seperator;
// echo(temp1 + " " + temp2 + " " + temp3);
}
}
}
iterator++;
if (iterator == 1)
{
echo(attributes);
for (int i = 0; i < attributes.length(); i++)
line = line + "-";
if (output == null)
echo(line);
}
echo(attributevalues);
line = "";
attributes = "";
attributevalues = "";
} while (it.hasNext());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void displayqueues(String output, String seperator)
{
Iterator it = set.iterator();
String line = "";
int iterator = 0;
String temp1 = "";
String temp2 = "";
try
{
do
{
ObjectName temp_object = null;
if (it.hasNext())
{
temp_object = (ObjectName) it.next();
}
// echo(temp_object.getCanonicalKeyPropertyListString());
MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
if (attr_info == null)
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
if (output == null)
echo(temp);
}
else
{
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
Integer attr_count = QUEUE_ATTRIBUTES.get(attr.getName());
if(attr_count == null)
{
continue;
}
try
{
toWrite = mbsc.getAttribute(temp_object, attr.getName());
if (output == null)
{
switch (attr_count)
{
case 1:
case 2:
temp1 = attr.getName();
while (temp1.length() < 10)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
temp2 = toWrite.toString();
while (temp2.length() < 10)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
break;
case 3:
temp1 = attr.getName();
while (temp1.length() < 20)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
temp2 = toWrite.toString();
while (temp2.length() < 20)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
break;
case 4:
temp1 = attr.getName();
while (temp1.length() < 13)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
temp2 = toWrite.toString();
while (temp2.length() < 13)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
break;
case 5:
temp1 = attr.getName();
while (temp1.length() < 20)
temp1 = " " + temp1;
attributes = attributes + temp1 + "|";
temp2 = toWrite.toString();
while (temp2.length() < 20)
temp2 = " " + temp2;
attributevalues = attributevalues + temp2 + "|";
break;
}
}
else if (output.compareToIgnoreCase("csv") == 0)
{
temp1 = attr.getName();
attributes = attributes + temp1 + seperator;
temp2 = toWrite.toString();
attributevalues = attributevalues + temp2 + seperator;
}
else
{
echo("Wrong output format specified currently CLI supports only csv output format");
return;
}
}
catch (Exception x)
{
x.printStackTrace();
}
}
}
iterator++;
if (iterator == 1)
{
for (int i = 0; i < attributes.length(); i++)
line = line + "-";
if (output == null)
echo(line);
echo(attributes);
if (output == null)
echo(line);
}
echo(attributevalues);
line = "";
attributes = "";
attributevalues = "";
} while (it.hasNext());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void displayinfo(String output, String seperator)
{
Iterator it = set.iterator();
String temp1, temp2 = "";
try
{
do
{
ObjectName temp_object = null;
if (it.hasNext())
{
temp_object = (ObjectName) it.next();
}
// echo(temp_object.getCanonicalKeyPropertyListString());
MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
if (attr_info == null)
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
echo(temp);
}
else
{
echo(temp_object.toString());
String temp = "";
while (temp_object.toString().length() > temp.length())
temp = "=" + temp;
echo(temp);
for (MBeanAttributeInfo attr : attr_info)
{
Object toWrite = null;
try
{
toWrite = mbsc.getAttribute(temp_object, attr.getName());
}
catch (Exception x)
{
temp2 = "-";
}
temp1 = attr.getName();
if (toWrite != null)
temp2 = toWrite.toString();
if (output == null)
{
while (temp1.length() < 35)
temp1 = " " + temp1;
while (temp2.length() < 35)
temp2 = " " + temp2;
echo(temp1 + " " + temp2);
}
else if (output.compareToIgnoreCase("csv") == 0)
echo(temp1 + seperator + temp2);
else
{
echo("Wrong output format specified currently CLI supports only csv output format");
return;
}
}
echo("");
echo("");
}
} while (it.hasNext());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void setQueryString(String object, String name, String vhost)
{
}
public void setQueryStringforinfo(String object, String name, String virtualhost)
{
}
public String getQueryString()
{
return querystring;
}
public Set getSet()
{
return set;
}
public Object getAttribute(ObjectName object, String attribute)
{
try
{
return mbsc.getAttribute(object, attribute);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public void setAttribute(ObjectName object, Attribute attribute)
{
try
{
mbsc.setAttribute(object, attribute);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}