mockdatabase.java
来自「opennms得相关源码 请大家看看」· Java 代码 · 共 601 行 · 第 1/2 页
JAVA
601 行
//// This file is part of the OpenNMS(R) Application.//// OpenNMS(R) is Copyright (C) 2005 The OpenNMS Group, Inc. All rights reserved.// OpenNMS(R) is a derivative work, containing both original code, included code and modified// code that was published under the GNU General Public License. Copyrights for modified // and included code are below.//// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.//// Original code base Copyright (C) 1999-2001 Oculan Corp. All rights reserved.//// This program 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 2 of the License, or// (at your option) any later version.//// This program 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 this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// For more information contact:// OpenNMS Licensing <license@opennms.org>// http://www.opennms.org/// http://www.opennms.com///package org.opennms.netmgt.mock;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Timestamp;import java.text.ParseException;import java.util.Collection;import java.util.Date;import java.util.LinkedList;import java.util.List;import org.hsqldb.Server;import org.opennms.netmgt.EventConstants;import org.opennms.netmgt.config.DbConnectionFactory;import org.opennms.netmgt.eventd.db.Constants;import org.opennms.netmgt.utils.Querier;import org.opennms.netmgt.utils.SingleResultQuerier;import org.opennms.netmgt.utils.Updater;import org.opennms.netmgt.xml.event.Event;/** * In memory database comparable to the postgres database that can be used for unit * testing. Can be populated from a MockNetwork * @author brozow */public class MockDatabase implements DbConnectionFactory, EventWriter { private Server m_server; public MockDatabase() { try { Class.forName("org.hsqldb.jdbcDriver" ); } catch (Exception e) { throw new RuntimeException("Unable to locate hypersonic driver"); } create(); } public void create() { update("shutdown"); update("create table node (" + "nodeID integer, " + "dpName varchar(12)," + "nodeCreateTime timestamp not null," + "nodeParentID integer," + "nodeType char(1)," + "nodeSysOID varchar(256)," + "nodeSysName varchar(256)," + "nodeSysDescription varchar(256)," + "nodeSysLocation varchar(256)," + "nodeSysContact varchar(256)," + "nodeLabel varchar(256)," + "nodeLabelSource char(1)," + "nodeNetBIOSName varchar(16)," + "nodeDomainName varchar(16)," + "operatingSystem varchar(64)," + "lastCapsdPoll timestamp," + //"constraint fk_dpName foreign key (dpName) references distPoller," + "constraint pk_nodeID primary key (nodeID)" + ")"); update("create table ipInterface (" + "nodeID integer, " + "ipAddr varchar(16) not null, " + "ifIndex integer," + "ipHostname varchar(256)," + "ipStatus integer," + "ipLastCapsdPoll timestamp," + "isSnmpPrimary char(1)," + "isManaged char(1), " + "constraint fk_nodeID1 foreign key (nodeID) references node ON DELETE CASCADE" + ");"); update("create table snmpInterface (" + "nodeID integer, " + "ipAddr varchar(16) not null, " + "snmpIpAdEntNetMask varchar(16), " + "snmpPhysAddr char(12)," + "ifIndex integer," + "snmpIfDesc varchar(256)," + "snmpIfType integer," + "snmpIfName varchar(32)," + "snmpIfSpeed bigint," + "snmpIfAdminStatus integer," + "snmpIfOperStatus integer," + "snmpIfAlias varchar(32)," + "constraint fk_nodeID2 foreign key (nodeID) references node ON DELETE CASCADE" + ");"); update("create table service (" + "serviceID integer, " + "serviceName varchar(32) not null, " + "constraint pk_serviceID primary key (serviceID)" + ")"); update("create table ifServices (" + "nodeID integer, " + "ipAddr varchar(16) not null," + "ifIndex integer," + "serviceID integer," + "lastGood timestamp," + "lastFail timestamp," + "qualifier char(16)," + "status char(1)," + "source char(1)," + "notify char(1), " + "constraint fk_nodeID3 foreign key (nodeID) references node ON DELETE CASCADE," + "constraint fk_serviceID1 foreign key (serviceID) references service ON DELETE CASCADE" + ");"); update("create table events (" + "eventID integer," + "eventUei varchar(256) not null," + "nodeID integer," + "eventTime timestamp not null," + "eventHost varchar(256)," + "eventSource varchar(128) not null," + "ipAddr varchar(16)," + "eventDpName varchar(12) not null," + "eventSnmphost varchar(256)," + "serviceID integer," + "eventSnmp varchar(256)," + "eventParms longvarchar," + "eventCreateTime timestamp not null," + "eventDescr varchar(4000)," + "eventLoggroup varchar(32)," + "eventLogmsg varchar(256)," + "eventSeverity integer not null," + "eventPathOutage varchar(1024)," + "eventCorrelation varchar(1024)," + "eventSuppressedCount integer," + "eventOperInstruct varchar(1024)," + "eventAutoAction varchar(256)," + "eventOperAction varchar(256)," + "eventOperActionMenuText varchar(64)," + "eventNotification varchar(128)," + "eventTticket varchar(128)," + "eventTticketState integer," + "eventForward varchar(256)," + "eventMouseOverText varchar(64)," + "eventLog char(1) not null," + "eventDisplay char(1) not null," + "eventAckUser varchar(256)," + "eventAckTime timestamp," + "constraint pk_eventID primary key (eventID)," + "constraint fk_nodeID6 foreign key (nodeID) references node ON DELETE CASCADE" + ")"); update("create table outages (" + "outageID integer," + "svcLostEventID integer," + "svcRegainedEventID integer," + "nodeID integer," + "ipAddr varchar(16) not null," + "serviceID integer," + "ifLostService timestamp not null," + "ifRegainedService timestamp," + "constraint pk_outageID primary key (outageID)," + "constraint fk_eventID1 foreign key (svcLostEventID) references events (eventID) ON DELETE CASCADE," + "constraint fk_eventID2 foreign key (svcRegainedEventID) references events (eventID) ON DELETE CASCADE," + "constraint fk_nodeID4 foreign key (nodeID) references node (nodeID) ON DELETE CASCADE," + "constraint fk_serviceID2 foreign key (serviceID) references service (serviceID) ON DELETE CASCADE" + ")"); update("create table notifications (" + " textMsg varchar(4000) not null," + " subject varchar(256)," + " numericMsg varchar(256)," + " notifyID integer," + " pageTime timestamp," + " respondTime timestamp," + " answeredBy varchar(256)," + " nodeID integer," + " interfaceID varchar(16)," + " serviceID integer," + " queueID varchar(256), " + " eventID integer," + " eventUEI varchar(256) not null," + " constraint pk_notifyID primary key (notifyID)," + " constraint fk_nodeID7 foreign key (nodeID) references node (nodeID) ON DELETE CASCADE," + " constraint fk_eventID3 foreign key (eventID) references events (eventID) ON DELETE CASCADE" + " )"); update("create table usersNotified (\n" + " userID varchar(256) not null," + " notifyID integer," + " notifyTime timestamp," + " media varchar(32)," + " contactinfo varchar(64)," + " autonotify char(1)," + " constraint fk_notifID2 foreign key (notifyID) references notifications (notifyID) ON DELETE CASCADE" + ");"); update("create sequence outageNxtId start with 1"); update("create sequence eventNxtId start with 1"); update("create sequence notifNxtId start with 1"); update("create table seqQueryTable (row integer)"); update("insert into seqQueryTable (row) values (0)"); } public void startServer() { m_server = new Server(); m_server.setDatabasePath(0, "mem:test"); synchronized(m_server) { m_server.start(); } } public void drop() { if (m_server != null) m_server.stop(); update("shutdown"); } public void populate(MockNetwork network) { MockVisitor dbCreater = new MockVisitorAdapter() { public void visitNode(MockNode node) { writeNode(node); } public void visitInterface(MockInterface iface) { writeInterface(iface); } public void visitService(MockService svc) { writeService(svc); } }; network.visit(dbCreater); } public void writeNode(MockNode node) { Object[] values = { new Integer(node.getNodeId()), node.getLabel(), new Timestamp(System.currentTimeMillis()) }; update("insert into node (nodeID, nodeLabel, nodeCreateTime) values (?, ?, ?)", values); } public Connection getConnection() throws SQLException { Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:test", "sa", ""); return c; } public void update(String sql) { update(sql, new Object[0]); } public void update(String stmt, Object[] values) {// StringBuffer buf = new StringBuffer("[");// for(int i = 0; i < values.length; i++) {// if (i != 0)// buf.append(", ");// buf.append(values[i]);// }// buf.append("]");// MockUtil.println("Executing "+stmt+" with values "+buf); Updater updater = new Updater(this, stmt); updater.execute(values); } public void writeInterface(MockInterface iface) { Object[] values = { new Integer(iface.getNodeId()), iface.getIpAddr() }; update("insert into ipInterface (nodeID, ipAddr) values (?, ?)", values); writeSnmpInterface(iface);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?