SnmpPathDispatch.java

package eu.linuxengineering.snmp;

import java.util.Arrays;

import eu.javaexperience.semantic.references.MayNull;
import net.sf.snmpadaptor4j.object.SnmpOid;

public class SnmpPathDispatch
{
	protected @MayNull SnmpOid oid;
	protected int index;
	protected int[] oids;
	
	protected SnmpPathDispatch(SnmpOid oid)
	{
		this(oid, 0);
	}
	
	public SnmpPathDispatch(SnmpOid oid, int index)
	{
		this.oid = oid;
		this.oids = oid.getOid();
		this.index = index;
	}
	
	public SnmpPathDispatch(SnmpPathDispatch spd, int index)
	{
		this.oid = spd.oid;
		this.oids = spd.oids;
		this.index = index;
	}
	
	public SnmpPathDispatch(int[] oids, int index)
	{
		this.oids = oids;
		this.index = index;
	}
	
	public boolean hasNexOidPath()
	{
		return index < oids.length;
	}
	
	public Integer getCurrentPathOid()
	{
		return oids[index];
	}

	public Integer getCurrentPathIdAndGoNext()
	{
		return oids[index++];
	}

	public int getCurrentPathIndex()
	{
		return index;
	}

	public int getPathLength()
	{
		return oids.length;
	}
	
	@Override
	public String toString()
	{
		return "SnmpPathDispatch: "+Arrays.toString(oids)+", at: "+index;
	}
	
	public boolean isLastDispatch()
	{
		return index == oids.length-1;
	}

	public boolean isInvalid()
	{
		return index >= oids.length || index < 0;
	}

	public void jumpNextNode()
	{
		++index;
	}
	
	public void jumpPreviousNode()
	{
		--index;
	}

	public void setPathIndex(int i)
	{
		index = i;
	}

	public int[] copyCurrentPath()
	{
		return Arrays.copyOf(oids, index+1);
	}
}