[SNMP4J] Can you suggest me how to make a Table in which we can add rows dynamically?

Frank Fock fock at agentpp.com
Sat Dec 12 15:21:27 CET 2015


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
> SNMP4J at agentpp.org
> 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




More information about the SNMP4J mailing list