/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ *******************************************************************************/ package org.opennms.netmgt.model.events.snmp; import org.opennms.netmgt.EventConstants; import org.opennms.netmgt.snmp.SnmpValue; import org.opennms.netmgt.xml.event.Parm; import org.opennms.netmgt.xml.event.Value; /** * <p>SyntaxToEvent class.</p> */ public class SyntaxToEvent { int m_typeId; String m_type; /** Constant <code>m_syntaxToEvents</code> */ public static SyntaxToEvent[] m_syntaxToEvents; static { setupSyntax(); } /** * <p>Constructor for SyntaxToEvent.</p> * * @param typeId a int. * @param type a {@link java.lang.String} object. */ private SyntaxToEvent(int typeId, String type) { m_typeId = typeId; m_type = type; } /** * <p>getTypeId</p> * * @return a int. */ private int getTypeId() { return m_typeId; } /** * <p>getType</p> * * @return a {@link java.lang.String} object. */ private String getType() { return m_type; } /** * <p>setupSyntax</p> */ public static void setupSyntax() { m_syntaxToEvents = new SyntaxToEvent[] { new SyntaxToEvent(SnmpValue.SNMP_INT32, EventConstants.TYPE_SNMP_INT32), new SyntaxToEvent(SnmpValue.SNMP_NULL, EventConstants.TYPE_SNMP_NULL), new SyntaxToEvent(SnmpValue.SNMP_OBJECT_IDENTIFIER, EventConstants.TYPE_SNMP_OBJECT_IDENTIFIER), new SyntaxToEvent(SnmpValue.SNMP_IPADDRESS, EventConstants.TYPE_SNMP_IPADDRESS), new SyntaxToEvent(SnmpValue.SNMP_TIMETICKS, EventConstants.TYPE_SNMP_TIMETICKS), new SyntaxToEvent(SnmpValue.SNMP_COUNTER32, EventConstants.TYPE_SNMP_COUNTER32), new SyntaxToEvent(SnmpValue.SNMP_GAUGE32, EventConstants.TYPE_SNMP_GAUGE32), new SyntaxToEvent(SnmpValue.SNMP_OCTET_STRING, EventConstants.TYPE_SNMP_OCTET_STRING), new SyntaxToEvent(SnmpValue.SNMP_OPAQUE, EventConstants.TYPE_SNMP_OPAQUE), new SyntaxToEvent(SnmpValue.SNMP_COUNTER64, EventConstants.TYPE_SNMP_COUNTER64), new SyntaxToEvent(-1, EventConstants.TYPE_STRING) }; } /** * <p>processSyntax</p> * * @param name a {@link java.lang.String} object. * @param value a {@link org.opennms.netmgt.snmp.SnmpValue} object. * @return a {@link org.opennms.netmgt.xml.event.Parm} object. */ public static Parm processSyntax(final String name, final SnmpValue value) { final Value val = new Value(); boolean found = false; for (int i = 0; i < m_syntaxToEvents.length; i++) { if (m_syntaxToEvents[i].getTypeId() == -1 || m_syntaxToEvents[i].getTypeId() == value.getType()) { val.setType(m_syntaxToEvents[i].getType()); String encoding = null; if (value.isDisplayable()) { if (name.matches(".*[Mm][Aa][Cc].*")) { encoding = EventConstants.XML_ENCODING_MAC_ADDRESS; } else { encoding = EventConstants.XML_ENCODING_TEXT; } } else { if (value.getBytes().length == 6) { encoding = EventConstants.XML_ENCODING_MAC_ADDRESS; } else { encoding = EventConstants.XML_ENCODING_BASE64; } } val.setEncoding(encoding); val.setContent(EventConstants.toString(encoding, value)); found = true; break; } } if (!found) { throw new IllegalStateException("Internal error: fell through the " + "bottom of the loop. The syntax-to-events array might not have a " + "catch-all for Object"); } final Parm parm = new Parm(); parm.setParmName(name); parm.setValue(val); return parm; } }