001: /*_############################################################################
002: _##
003: _## SNMP4J-Agent - MOTableModel.java
004: _##
005: _## Copyright (C) 2005-2007 Frank Fock (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.agent.mo;
022:
023: import org.snmp4j.smi.OID;
024: import java.util.Iterator;
025:
026: /**
027: * The <code>MOTableModel</code> interface defines the base table
028: * model interface needed for <code>MOTable</code>s. This model can be used
029: * for read-only and read-write SNMP conceptual tables. For read-create tables
030: * the {@link MOMutableTableModel} should be used instead.
031: *
032: * @author Frank Fock
033: * @version 1.0
034: */
035: public interface MOTableModel {
036:
037: /**
038: * Returns the number of columns currently in this table model.
039: * @return
040: * the number of columns.
041: */
042: int getColumnCount();
043:
044: /**
045: * Returns the number of rows currently in this table model.
046: * @return
047: * the number of rows.
048: */
049: int getRowCount();
050:
051: /**
052: * Checks whether this table model contains a row with the specified index.
053: * @param index
054: * the index OID of the row to search.
055: * @return
056: * <code>true</code> if this model has a row of with index
057: * <code>index</code> or <code>false</code> otherwise.
058: */
059: boolean containsRow(OID index);
060:
061: /**
062: * Gets the row with the specified index.
063: * @param index
064: * the row index.
065: * @return
066: * the <code>MOTableRow</code> with the specified index and
067: * <code>null</code> if no such row exists.
068: */
069: MOTableRow getRow(OID index);
070:
071: /**
072: * Returns an iterator over the rows in this table model.
073: * @return
074: * an <code>Iterator</code> returning <code>MOTableRow</code> instances.
075: */
076: Iterator iterator();
077:
078: /**
079: * Returns an iterator on a view of the rows of this table model
080: * whose index values are greater or equal <code>lowerBound</code>.
081: *
082: * @param lowerBound
083: * the lower bound index (inclusive). If <code>lowerBound</code> is
084: * <code>null</code> the returned iterator is the same as returned by
085: * {@link #iterator}.
086: * @return
087: * an <code>Iterator</code> over the
088: */
089: Iterator tailIterator(OID lowerBound);
090:
091: /**
092: * Returns the last row index in this model.
093: * @return
094: * the last index OID of this model.
095: */
096: OID lastIndex();
097:
098: /**
099: * Returns the first row index in this model.
100: * @return
101: * the first index OID of this model.
102: */
103: OID firstIndex();
104:
105: /**
106: * Returns the first row contained in this model.
107: * @return
108: * the <code>MOTableRow</code> with the smallest index or <code>null</code>
109: * if the model is empty.
110: */
111: MOTableRow firstRow();
112:
113: /**
114: * Returns the last row contained in this model.
115: * @return
116: * the <code>MOTableRow</code> with the greatest index or <code>null</code>
117: * if the model is empty.
118: */
119: MOTableRow lastRow();
120: }
|