001: /*_############################################################################
002: _##
003: _## SNMP4J - TableEvent.java
004: _##
005: _## Copyright (C) 2003-2008 Frank Fock and Jochen Katz (SNMP4J.org)
006: _##
007: _## Licensed under the Apache License, Version 2.0 (the "License");
008: _## you may not use this file except in compliance with the License.
009: _## You may obtain a copy of the License at
010: _##
011: _## http://www.apache.org/licenses/LICENSE-2.0
012: _##
013: _## Unless required by applicable law or agreed to in writing, software
014: _## distributed under the License is distributed on an "AS IS" BASIS,
015: _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016: _## See the License for the specific language governing permissions and
017: _## limitations under the License.
018: _##
019: _##########################################################################*/
020:
021: package org.snmp4j.util;
022:
023: import org.snmp4j.smi.OID;
024: import org.snmp4j.smi.VariableBinding;
025: import org.snmp4j.PDU;
026: import java.util.Arrays;
027:
028: /**
029: * The <code>TableEvent</code> class reports events in a table retrieval
030: * operation.
031: *
032: * @author Frank Fock
033: * @version 1.8
034: * @since 1.0.2
035: * @see TableUtils
036: */
037: public class TableEvent extends RetrievalEvent {
038:
039: private static final long serialVersionUID = 3340523737695933621L;
040:
041: private OID index;
042:
043: protected TableEvent(Object source, Object userObject) {
044: super (source, userObject);
045: this .userObject = userObject;
046: }
047:
048: /**
049: * Creates a table event with a status.
050: * @param source
051: * the source of the event.
052: * @param userObject
053: * the user object or <code>null</code>.
054: * @param status
055: * one of the status constants defined for this object.
056: */
057: public TableEvent(Object source, Object userObject, int status) {
058: this (source, userObject);
059: this .status = status;
060: }
061:
062: /**
063: * Creates a table event with an exception.
064: * @param source
065: * the source of the event.
066: * @param userObject
067: * the user object or <code>null</code>.
068: * @param exception
069: * an exception instance.
070: */
071: public TableEvent(Object source, Object userObject,
072: Exception exception) {
073: this (source, userObject);
074: this .exception = exception;
075: this .status = STATUS_EXCEPTION;
076: }
077:
078: /**
079: * Creates a table event with a report PDU.
080: * @param source
081: * the source of the event.
082: * @param userObject
083: * the user object or <code>null</code>.
084: * @param report
085: * a PDU of type {@link PDU#REPORT}.
086: */
087: public TableEvent(Object source, Object userObject, PDU report) {
088: this (source, userObject);
089: this .reportPDU = report;
090: this .status = STATUS_REPORT;
091: }
092:
093: /**
094: * Creates a table event with row data.
095: *
096: * @param source
097: * the source of the event.
098: * @param userObject
099: * the user object or <code>null</code>.
100: * @param index
101: * the index OID of the row.
102: * @param cols
103: * an array of <code>VariableBinding</code> instances containing the
104: * elements of the row. The array may contain <code>null</code> elements
105: * which indicates that the agent does not return an instance for that
106: * column and row index. If an element is not <code>null</code>, then
107: * the <code>OID</code> of the variable binding contains the full instance
108: * <code>OID</code> of the variable.
109: */
110: public TableEvent(Object source, Object userObject, OID index,
111: VariableBinding[] cols) {
112: super (source, userObject, cols);
113: this .index = index;
114: }
115:
116: /**
117: * Gets the row index OID.
118: * @return
119: * the row's index OID or <code>null</code> if {@link #isError()} returns
120: * <code>true</code>.
121: */
122: public OID getIndex() {
123: return index;
124: }
125:
126: /**
127: * Gets the columnar objects of the row.
128: * @return
129: * an array of <code>VariableBinding</code> instances containing the
130: * elements of the row. The array may contain <code>null</code> elements
131: * which indicates that the agent does not return an instance for that
132: * column and row index. If an element is not <code>null</code>, then
133: * the <code>OID</code> of the variable binding contains the full instance
134: * <code>OID</code> of the variable.<p>
135: * If {@link #isError()} returns <code>true</code>, <code>null</code>
136: * will be returned.
137: */
138: public VariableBinding[] getColumns() {
139: return vbs;
140: }
141:
142: public String toString() {
143: return getClass().getName() + "[index=" + index + ",vbs="
144: + ((vbs == null) ? "null" : "" + Arrays.asList(vbs))
145: + ",status=" + status + ",exception=" + exception
146: + ",report=" + reportPDU + "]";
147: }
148: }
|