/* * Mibble MIB Parser (www.mibble.org) * * See LICENSE.txt for licensing information. * * Copyright (c) 2005-2017 Per Cederberg. All rights reserved. */ package net.percederberg.mibble.snmp; import net.percederberg.mibble.MibException; import net.percederberg.mibble.MibLoaderLog; import net.percederberg.mibble.MibSymbol; import net.percederberg.mibble.MibType; import net.percederberg.mibble.MibValue; /** * An SNMP index object. This declaration is used inside an object * type index declaration. An index contains either a type or a * value. Indices based on values may be implied. * * @see SnmpObjectType * * @author Per Cederberg * @version 2.8 * @since 2.6 */ public class SnmpIndex { /** * The implied flag. */ private boolean implied; /** * The index value, or null. */ private MibValue value; /** * The index type, or null. */ private MibType type; /** * Creates a new SNMP index. Exactly one of the value or type * arguments are supposed to be non-null. * * @param implied the implied flag * @param value the index value, or null * @param type the index type, or null */ public SnmpIndex(boolean implied, MibValue value, MibType type) { this.implied = implied; this.value = value; this.type = type; } /** * Initializes the object. This will remove all levels of * indirection present, such as references to other types and * values. No information is lost by this operation. This method * may modify this object as a side-effect, and will be called by * the MIB loader. * * @param symbol the MIB symbol containing this object * @param log the MIB loader log * * @throws MibException if an error was encountered during the * initialization */ void initialize(MibSymbol symbol, MibLoaderLog log) throws MibException { if (value != null) { value = value.initialize(log, null); } if (type != null) { type = type.initialize(symbol, log); } } /** * Checks if this index is an implied value. If this is true, the * index also represents a value index. * * @return true if the index is an implied value, or * false otherwise */ public boolean isImplied() { return implied; } /** * Returns the index value if present. * * @return the index value, or null if not applicable * * @see #getType() */ public MibValue getValue() { return value; } /** * Returns the index type if present. * * @return the index type, or null if not applicable * * @see #getValue() */ public MibType getType() { return type; } /** * Returns the index type or value. * * @return the index type or value * * @see net.percederberg.mibble.MibValue * @see net.percederberg.mibble.MibType */ public Object getTypeOrValue() { if (value != null) { return value; } else { return type; } } /** * Returns a string representation of this object. * * @return a string representation of this object */ public String toString() { StringBuilder buffer = new StringBuilder(); if (implied) { buffer.append("IMPLIED "); } buffer.append(getTypeOrValue()); return buffer.toString(); } }