Project

General

Profile

1 21 jones
/**
2
 *        Name: DBReader.java
3
 *     Purpose: A Class that creates an XML text document
4
 *              from a query to a relational DB containing a DOM representation
5 35 jones
 *   Copyright: 2000 Regents of the University of California and the
6
 *              National Center for Ecological Analysis and Synthesis
7 21 jones
 *     Authors: Matt Jones
8
 *
9
 *     Version: '$Id$'
10
 */
11
12 51 jones
package edu.ucsb.nceas.metacat;
13
14 21 jones
import java.io.*;
15
import java.net.URL;
16
import java.net.MalformedURLException;
17
import java.sql.*;
18
import java.util.Stack;
19
20 31 jones
/**
21
 * A Class that creates an XML text document
22
 * from a query to a relational DB containing a DOM representation
23
 */
24 21 jones
public class DBReader {
25
26
  static  String 	defaultDB = "jdbc:oracle:thin:@localhost:1521:test";
27
  private Connection	conn = null;
28
29 31 jones
  /**
30
   * main routine used for testing.
31
   *
32
   * Usage: java DBReader <nodeid> <user> <password> [dbstring]
33
   *
34
   * @param nodeid the id number of the root of the subtree to display
35
   * @param user the username to use for the database connection
36
   * @param password the password to use for the database connection
37
   * @param dbstring the connection info to use for the database connection
38
   */
39 21 jones
  static public void main(String[] args) {
40
41
     if (args.length < 3)
42
     {
43
        System.err.println("Wrong number of arguments!!!");
44
        System.err.println("USAGE: java DBReader " +
45
                           "<nodeid> <user> <password> [dbstring]");
46
        return;
47
     } else {
48
        try {
49
50 23 jones
          String nodeidstr = args[0];
51
          long nodeid = (new Long(nodeidstr).longValue());
52 21 jones
          String user     = args[1];
53
          String password = args[2];
54
          String dbstring = null;
55
56
          if (args.length <= 3) {
57
            dbstring = defaultDB;
58
          } else {
59
            dbstring = args[3];
60
          }
61
62 50 jones
          // Open a connection to the database
63
          Connection dbconn = MetaCatUtil.openDBConnection(
64
                "oracle.jdbc.driver.OracleDriver",
65
                dbstring, user, password);
66
67
          DBReader rd = new DBReader( dbconn );
68 31 jones
          String xml = rd.readXMLDocument(nodeid);
69 21 jones
          System.out.println(xml);
70
71
        } catch (Exception e) {
72
          System.err.println("EXCEPTION HANDLING REQUIRED");
73
          System.err.println(e.getMessage());
74
          e.printStackTrace(System.err);
75
        }
76
     }
77
  }
78
79 31 jones
  /**
80
   * construct a DBReader instance.
81
   *
82
   * Generally, one calls readXMLDocument() after constructing the instance
83
   *
84 50 jones
   * @param conn the database connection from which to read the document
85 31 jones
   */
86 50 jones
  public DBReader( Connection conn )
87 21 jones
                  throws IOException,
88
                         SQLException,
89
                         ClassNotFoundException
90
  {
91 50 jones
    this.conn = conn;
92 21 jones
  }
93
94 31 jones
  /**
95
   * Create an XML document from the database starting with the element
96
   * having element_id nodeid
97
   *
98
   * @param nodeid the node that will represent the root of the document
99
   */
100
  public String readXMLDocument(long nodeid) {
101 21 jones
    StringBuffer doc = new StringBuffer();
102
103 23 jones
    ReaderElement element = new ReaderElement(conn, nodeid);
104 24 jones
    doc.append("<?xml version=\"1.0\"?>\n");
105
    doc.append(element.toString());
106 21 jones
107
    return (doc.toString());
108
  }
109
}