Hi Réda,
Have you found the addRow method in the MOMutableTableModel interface
meanwhile?
Best regards,
Frank
Am 07.12.2015 um 10:52 schrieb Réda BENKIRANE:
Hi,
I am working on an SNMP4J agent and I want this agent to be able to create a
conceptual table. This conceptual table can have 0 rows or as much rows as I
need. I want to add rows and fill those rows with values not from the agent but
from a SNMP manager (client) at runtime (i.e. : The Manager sends a SET request
to the agent and as a consequence of the set, a new row is added).
I managed to find a code with a class that contains methods to create,
initialize and build an MOTable with snmp4j package. However, I don't know how
to add rows to this table.
Can you suggest me how can I modify the following code ? Or what do I need to
add in the agent or in the SNMP4J manager to do what I want ?
Here is the MOTableBuilder.java class :
import java.util.ArrayList;import java.util.List;
import org.snmp4j.agent.MOAccess;import
org.snmp4j.agent.mo.DefaultMOMutableRow2PC;import
org.snmp4j.agent.mo.DefaultMOTable;import org.snmp4j.agent.mo.MOColumn;import
org.snmp4j.agent.mo.MOMutableTableModel;import
org.snmp4j.agent.mo.MOTable;import org.snmp4j.agent.mo.MOTableIndex;import
org.snmp4j.agent.mo.MOTableSubIndex;import org.snmp4j.smi.OID;import
org.snmp4j.smi.SMIConstants;import org.snmp4j.smi.Variable;
/** * <p>Utility class for adding dynamic data into an {@link MOTable}</p> * * <pre><code>
MOTableBuilder builder = new MOTableBuilder(new OID(".1.3.6.1.2.1.2.2.1"))
.addColumnType(SMIConstants.SYNTAX_INTEGER,MOAccessImpl.ACCESS_READ_ONLY)
.addColumnType(SMIConstants.SYNTAX_OCTET_STRING,MOAccessImpl.ACCESS_READ_ONLY); for(MyObject o: myObjects) {
builder.addRowValue(new Integer32(o.getId())) .addRowValue(new OctetString(o.getName())); }MOTable table =
builder.build(); </code><pre> * @author johanrask * */public class MOTableBuilder {
private MOTableSubIndex[] subIndexes = new MOTableSubIndex[] { new
MOTableSubIndex( SMIConstants.SYNTAX_INTEGER) }; private
MOTableIndex indexDef = new MOTableIndex(subIndexes, false);
private final List<MOColumn> columns = new ArrayList<MOColumn>(); private final
List<Variable[]> tableRows = new ArrayList<Variable[]>(); private int currentRow = 0;
private int currentCol = 0;
private OID tableRootOid;
//private int colTypeCnt = 0;
/** * Specified oid is the root oid of this table */
public MOTableBuilder(OID oid) { this.tableRootOid = oid;
}
/** * Adds all column types {@link MOColumn} to this table. *
Important to understand that you must add all types here before * adding any row
values * * @param syntax use {@link SMIConstants} * @param access
* @return */ @SuppressWarnings("rawtypes") public MOTableBuilder
addColumnType(int ID, int syntax, MOAccess access) { //colTypeCnt++;
columns.add(new MOColumn(ID, syntax, access)); return this; }
public MOTableBuilder addRowValue(Variable variable) { if
(tableRows.size() == currentRow) { tableRows.add(new
Variable[columns.size()]); }
tableRows.get(currentRow)[currentCol] = variable; currentCol++;
if (currentCol >= columns.size()) { currentRow++;
currentCol = 0; } return this; }
public MOTable build() { DefaultMOTable ifTable = new
DefaultMOTable(tableRootOid, indexDef,
columns.toArray(new MOColumn[0])); MOMutableTableModel model =
(MOMutableTableModel) ifTable.getModel(); int i = 1;
for (Variable[] variables : tableRows) {
model.addRow(new DefaultMOMutableRow2PC(new OID(String.valueOf(i)),
variables)); i++; }
ifTable.setVolatile(true); return ifTable; }}
Réda BENKIRANE
_______________________________________________
SNMP4J mailing list
[email protected]
https://oosnmp.net/mailman/listinfo/snmp4j
--
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax: +49 7024 8688231
_______________________________________________
SNMP4J mailing list
[email protected]
https://oosnmp.net/mailman/listinfo/snmp4j