/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2010-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.mock; import java.net.InetAddress; import java.util.List; import org.apache.commons.lang.builder.ToStringBuilder; import org.opennms.core.utils.InetAddressUtils; import org.opennms.netmgt.model.PollStatus; import org.opennms.netmgt.xml.event.Event; /** * <p>MockInterface class.</p> * * @author brozow * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates * @version $Id: $ */ public class MockInterface extends MockContainer<MockNode,MockService> { private String m_ifAlias; private final InetAddress m_inetAddr; private final int m_ifIndex; /** * <p>Constructor for MockInterface.</p> * * @param node a {@link org.opennms.netmgt.mock.MockNode} object. * @param ipAddr a {@link java.lang.String} object. */ public MockInterface(MockNode node, String ipAddr) { super(node); m_ifIndex = node.getNextIfIndex(); m_inetAddr = InetAddressUtils.addr(ipAddr); if (m_inetAddr == null) { throw new IllegalArgumentException("unable to convert "+ipAddr+" to an InetAddress."); } } // model /** * <p>addService</p> * * @param svcName a {@link java.lang.String} object. * @param serviceId a int. * @return a {@link org.opennms.netmgt.mock.MockService} object. */ public MockService addService(String svcName, int serviceId) { return (MockService) addMember(new MockService(this, svcName, serviceId)); } // model /** * <p>getIpAddr</p> * * @return a {@link java.lang.String} object. */ public String getIpAddr() { return InetAddressUtils.toIpAddrString(m_inetAddr); } // impl Object getKey() { return getIpAddr(); } // model /** * <p>getNetwork</p> * * @return a {@link org.opennms.netmgt.mock.MockNetwork} object. */ public MockNetwork getNetwork() { return getNode().getNetwork(); } // model /** * <p>getNode</p> * * @return a {@link org.opennms.netmgt.mock.MockNode} object. */ public MockNode getNode() { return (MockNode) getParent(); } // model /** * <p>getNodeId</p> * * @return a int. */ public int getNodeId() { return getNode().getNodeId(); } // model /** * <p>getNodeLabel</p> * * @return a {@link java.lang.String} object. */ public String getNodeLabel() { return getNode().getLabel(); } // FIXME: model? /** * <p>getPollStatus</p> * * @return a {@link org.opennms.netmgt.model.PollStatus} object. */ public PollStatus getPollStatus() { final String critSvcName = getNetwork().getCriticalService(); final MockService critSvc = getService(critSvcName); class IFStatusCalculator extends MockVisitorAdapter { PollStatus status = PollStatus.down(); public PollStatus getStatus() { return status; } public void visitService(MockService svc) { if (critSvc == null || critSvc.equals(svc)) { if (svc.getPollStatus().isUp()) status = PollStatus.up(); } } } IFStatusCalculator calc = new IFStatusCalculator(); visit(calc); return calc.getStatus(); } // model /** * <p>getService</p> * * @param svcName a {@link java.lang.String} object. * @return a {@link org.opennms.netmgt.mock.MockService} object. */ public MockService getService(String svcName) { return (MockService) getMember(svcName); } // model /** * <p>getServices</p> * * @return a {@link java.util.List} object. */ public List<MockService> getServices() { return getMembers(); } // model /** * <p>removeService</p> * * @param svc a {@link org.opennms.netmgt.mock.MockService} object. */ public void removeService(MockService svc) { removeMember(svc); } // impl /** * <p>toString</p> * * @return a {@link java.lang.String} object. */ public String toString() { return new ToStringBuilder(this) .append("ifAlias", m_ifAlias) .append("ifIndex", m_ifIndex) .append("inetAddr", InetAddressUtils.str(m_inetAddr)) .append("members", getMembers()) .toString(); } // impl /** {@inheritDoc} */ public void visit(MockVisitor v) { super.visit(v); v.visitInterface(this); visitMembers(v); } /** * <p>createDownEvent</p> * * @return a {@link org.opennms.netmgt.xml.event.Event} object. */ public Event createDownEvent() { return MockEventUtil.createInterfaceDownEvent("Test", this); } /** * <p>createUpEvent</p> * * @return a {@link org.opennms.netmgt.xml.event.Event} object. */ public Event createUpEvent() { return MockEventUtil.createInterfaceUpEvent("Test", this); } /** * <p>createNewEvent</p> * * @return a {@link org.opennms.netmgt.xml.event.Event} object. */ public Event createNewEvent() { return MockEventUtil.createNodeGainedInterfaceEvent("Test", this); } /** * <p>createDeleteEvent</p> * * @return a {@link org.opennms.netmgt.xml.event.Event} object. */ public Event createDeleteEvent() { return MockEventUtil.createInterfaceDeletedEvent("Test", this); } /** * <p>setIfAlias</p> * * @param ifAlias a {@link java.lang.String} object. */ public void setIfAlias(String ifAlias) { // ifAlias for an interface m_ifAlias = ifAlias; } /** * <p>getIfAlias</p> * * @return Returns the ifAlias. */ public String getIfAlias() { return m_ifAlias; } /** * <p>getAddress</p> * * @return a {@link java.net.InetAddress} object. */ public InetAddress getAddress() { return m_inetAddr; } /** * <p>getIfIndex</p> * * @return a int. */ public int getIfIndex() { return m_ifIndex; } }