/* * Mibble MIB Parser (www.mibble.org) * * See LICENSE.txt for licensing information. * * Copyright (c) 2004-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.MibType; import net.percederberg.mibble.MibValue; /** * An SNMP module compliance value. This declaration is used inside a * module declaration for both the GROUP and OBJECT compliance parts. * * @see SnmpModule * * @author Per Cederberg * @version 2.10 * @since 2.0 */ public class SnmpCompliance { /** * The compliance group flag. */ private boolean group; /** * The compliance value. */ private MibValue value; /** * The value syntax. */ private MibType syntax; /** * The value write syntax. */ private MibType writeSyntax; /** * The access mode. */ private SnmpAccess access; /** * The compliance description. */ private String description; /** * The compliance comment. */ private String comment = null; /** * Creates a new SNMP module compliance declaration. * * @param group the group compliance flag * @param value the compliance value * @param syntax the value syntax, or null * @param writeSyntax the value write syntax, or null * @param access the access mode, or null * @param description the compliance description */ public SnmpCompliance(boolean group, MibValue value, MibType syntax, MibType writeSyntax, SnmpAccess access, String description) { this.group = group; this.value = value; this.syntax = syntax; this.writeSyntax = writeSyntax; this.access = access; this.description = description; } /** * Initializes this object. This will remove all levels of * indirection present, such as references to other types, and * returns the basic type. No type 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 log the MIB loader log * * @throws MibException if an error was encountered during the * initialization */ void initialize(MibLoaderLog log) throws MibException { value = value.initialize(log, null); if (syntax != null) { syntax = syntax.initialize(null, log); } if (writeSyntax != null) { writeSyntax = writeSyntax.initialize(null, log); } } /** * Checks if this is a group compliance. * * @return true if this is a group compliance, or * false otherwise * * @since 2.6 */ public boolean isGroup() { return group; } /** * Checks if this is an object compliance. * * @return true if this is an object compliance, or * false otherwise * * @since 2.6 */ public boolean isObject() { return !group; } /** * Returns the value. * * @return the value */ public MibValue getValue() { return value; } /** * Returns the value syntax. * * @return the value syntax, or * null if not set */ public MibType getSyntax() { return syntax; } /** * Returns the value write syntax. * * @return the value write syntax, or * null if not set */ public MibType getWriteSyntax() { return writeSyntax; } /** * Returns the access mode. * * @return the access mode, or * null if not set */ public SnmpAccess getAccess() { return access; } /** * Returns the compliance description. Any unneeded indentation * will be removed from the description, and it also replaces all * tab characters with 8 spaces. * * @return the compliance description * * @see #getUnformattedDescription() */ public String getDescription() { return SnmpType.removeIndent(description); } /** * Returns the unformatted compliance description. This method * returns the original MIB file text, without removing unneeded * indentation or similar. * * @return the unformatted compliance description, or * null if no description has been set * * @see #getDescription() * * @since 2.6 */ public String getUnformattedDescription() { return description; } /** * Returns the compliance comment. * * @return the compliance comment, or * null if no comment was set * * @since 2.9 */ public String getComment() { return comment; } /** * Sets the compliance comment. * * @param comment the compliance comment * * @since 2.9 */ public void setComment(String comment) { this.comment = comment; } /** * Returns a string representation of this object. * * @return a string representation of this object */ public String toString() { StringBuilder buffer = new StringBuilder(); buffer.append(value); if (syntax != null) { buffer.append("\n Syntax: "); buffer.append(syntax); } if (writeSyntax != null) { buffer.append("\n Write-Syntax: "); buffer.append(writeSyntax); } if (access != null) { buffer.append("\n Access: "); buffer.append(access); } buffer.append("\n Description: "); buffer.append(description); return buffer.toString(); } }