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 + -
显示快捷键?