0

OIDのツリー構造の実装に問題があります。親をクリックすると、子の詳細のみを表示する必要があり、子のサブ子は表示しません。つまり、「。」を含むOIDを表示する必要はありません。(ドット)。

たとえば、OID構造がprivate.MIB.sample.firstprivate.MIB.sample.secondの場合などです。

MIBをクリックすると、最初と2番目ではなく「サンプル」のみが表示されます。

サンプルをクリックすると、1番目と2番目が表示されます。これをJavaで実装するにはどうすればよいですか。私のデータベースはMySQLです。私が試したコードを以下に示します

        FilteredRowSet rs = new FilteredRowSetImpl();

        // for Other Types Like OBJECT-TYPE, Object_IDENTIFIER
        rs = new FilteredRowSetImpl();
        rs.setCommand("Select * from MIBNODEDETAILS where " + "mn_OID like '" + OID
                + ".%' order by mn_NodeType, mn_OID");
        rs.setUrl(Constants.DB_CONNECTION_URL);
        rs.setFilter(new MibRowFilter(1, expString));
        rs.execute();

        rs.absolute(1);
        rs.beforeFirst();

変更はsetCommand引数で行われると思います。

これどうやってするの?

mobnodedetailsテーブルの構造

+--------------------+-------------------+-------------+
| mn_OID             | mn_name           | mn_nodetype |
+--------------------+-------------------+-------------+
| 1                  | iso               |           0 |
| 1.3                | org               |           1 |
| 1.3.6              | dod               |           1 |
| 1.3.6.1            | internet          |           1 |
| 1.3.6.1.1          | directory         |           1 |
| 1.3.6.1.2          | mgmt              |           1 |
| 1.3.6.1.2.1        | mib-2             |           0 |
| 1.3.6.1.2.1.1      | system            |           1 |
| 1.3.6.1.2.1.10     | transmission      |           1 |
4

2 に答える 2

0

以下に示す関数は、必要に応じてツリーを表示します。

public void populateMibValues()
{

    final DefaultTreeModel model = (DefaultTreeModel) this.m_mibTree.getModel();
    model.setRoot(null);

    this.rootNode.removeAllChildren();
    final String query_MibNodeDetailsSelect = "Select * from MIBNODEDETAILS where LENGTH(mn_oid)<=9 "
            + " and mn_OID<='1.3.6.1.4.1' order by mn_OID"; // only

    this.innerNodeNames.clear();
    this.innerNodes.clear();
    this.innerNodesOid = null;

    try {
        final ResultSet deviceRS = Application.getDBHandler().executeQuery(query_MibNodeDetailsSelect, null);// inner
        // nodes

        while (deviceRS.next()) {
            final mibNode mb = new mibNode(deviceRS.getString("mn_OID").toString(), deviceRS.getString("mn_name")
                    .toString());
            mb.m_Type = Integer.parseInt(deviceRS.getString("mn_nodetype").toString());
            createMibTree(mb);
        }
    }
    catch (final Exception e) {
        Application.showErrorInConsole(e);
        NmsLogger.writeErrorLog("ERROR creating MIB tree failed", e.toString());
    }
于 2012-09-20T04:26:58.140 に答える
0

あなたは次のようなものを使うことができます

  SELECT *
    FROM mibnodedetails
   WHERE mn_oid LIKE "+mn_OID+"%
    AND LENGTH ("+mn_OID+") + 2 = LENGTH (mn_oid)
ORDER BY mn_nodetype, mn_oid

したがって、mm_OIDを次のように渡すと1.3.6.1 (|1.3.6.1 |internet |1 |)

次の結果が得られます。

| 1.3.6.1.1          | directory         |           1 |
| 1.3.6.1.2          | mgmt              |           1 |

作業デモ

PS:長さ+ 2を使用しているため、これは9歳以上の子供には機能しません

于 2012-09-14T05:00:19.097 に答える