/*
* @(#)file SnmpOidDatabaseSupport.java
* @(#)author Sun Microsystems, Inc.
* @(#)version 1.14
* @(#)date 05/08/26
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*/
package com.sun.jmx.snmp;
// java import
//
import java.util.Vector;
// jmx import
//
import com.sun.jmx.snmp.SnmpOidTable;
import com.sun.jmx.snmp.SnmpOidRecord;
import com.sun.jmx.snmp.SnmpStatusException;
/**
* Defines a set of <CODE>SnmpOidTable</CODE> objects containing metadata definitions for MIB variables.
* Each <CODE>SnmpOidTable</CODE> should contain information on variables of one MIB.
* It provides resolution of all MIB variables contained in the <CODE>SnmpOidTable</CODE> objects.
* <p><b>This API is a Sun Microsystems internal API and is subject
* to change without notice.</b></p>
*/
public class SnmpOidDatabaseSupport implements SnmpOidDatabase {
/**
* Creates an empty <CODE>SnmpOidDatabaseSupport</CODE>.
*/
public SnmpOidDatabaseSupport(){
tables=new Vector();
}
/**
* Creates an <CODE>SnmpOidDatabaseSupport</CODE> containing the specified <CODE>SnmpOidTable</CODE> object.
* @param table The <CODE>SnmpOidTable</CODE> object used to initialize this <CODE>SnmpOidDatabaseSupport</CODE>.
*/
public SnmpOidDatabaseSupport(SnmpOidTable table){
tables=new Vector();
tables.addElement(table);
}
/**
* Adds a <CODE>SnmpOidTable</CODE> object in this <CODE>SnmpOidDatabase</CODE>.
* @param table The table to add.
*/
public void add(SnmpOidTable table) {
if (!tables.contains(table)) {
tables.addElement(table);
}
}
/**
* Removes a <CODE>SnmpOidTable</CODE> object from this <CODE>SnmpOidDatabase</CODE>.
* @param table The table to be removed.
* @exception SnmpStatusException The specified <CODE>SnmpOidTable</CODE> does not exist in this <CODE>SnmpOidDatabase</CODE>.
*/
public void remove(SnmpOidTable table) throws SnmpStatusException {
if (!tables.contains(table)) {
throw new SnmpStatusException("The specified SnmpOidTable does not exist in this SnmpOidDatabase");
}
tables.removeElement(table);
}
/**
* Searches for a MIB variable given its logical name and returns an <CODE>SnmpOidRecord</CODE>
* object containing information on the variable.
* @param name The name of the MIB variable.
* @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable.
*
* @exception SnmpStatusException The specified name does not exist in this <CODE>SnmpOidDatabase</CODE>
*/
public SnmpOidRecord resolveVarName(String name) throws SnmpStatusException {
for (int i=0;i<tables.size();i++) {
try {
return (((SnmpOidTable)tables.elementAt(i)).resolveVarName(name));
}
catch (SnmpStatusException e) {
if (i==tables.size()-1) {
throw new SnmpStatusException(e.getMessage());
}
}
}
return null;
}
/**
* Searches for a MIB variable given its OID and returns an <CODE>SnmpOidRecord</CODE> object containing
* information on the variable.
* @param oid The OID of the MIB variable.
* @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable.
* @exception SnmpStatusException The specified oid does not exist in this <CODE>SnmpOidDatabase</CODE>.
*/
public SnmpOidRecord resolveVarOid(String oid) throws SnmpStatusException {
for (int i=0;i<tables.size();i++) {
try {
return (((SnmpOidTable)tables.elementAt(i)).resolveVarOid(oid));
}
catch (SnmpStatusException e) {
if (i==tables.size()-1) {
throw new SnmpStatusException(e.getMessage());
}
}
}
return null;
}
/**
* Returns a list that can be used to traverse all the entries of the <CODE>SnmpOidTable</CODE> objects
* of this <CODE>SnmpOidDatabase</CODE>.
* @return A vector of <CODE>SnmpOidTable</CODE> objects containing all the elements of this <CODE>SnmpOidDatabase</CODE>.
*/
public Vector getAllEntries() {
Vector res = new Vector();
for (int i=0;i<tables.size();i++) {
Vector tmp = ((SnmpOidTable)tables.elementAt(i)).getAllEntries();
if (tmp != null) {
for(int ii=0; ii<tmp.size(); ii++) {
res.addElement(tmp.elementAt(ii));
}
}
}
// res.addAll(((SnmpOidTable)tables.elementAt(i)).getAllEntries());
return res;
}
/**
* Removes all <CODE>SnmpOidTable</CODE> objects from this <CODE>SnmpOidDatabase</CODE>.
*/
public void removeAll(){
tables.removeAllElements() ;
}
private Vector tables;
}
|