Example 6-4: XMLDoc lists, loads, saves, and deletes XML documents

import java.io.*;
import java.sql.*;
import java.net.URL;
import XMLDocuments;
import oracle.xml.parser.v2.*;

// Command-line utility to get, delete, list, and save XML documents
public class XMLDoc {
  public static void main(String[] args) throws Exception {
    Connection conn = Examples.getConnection();
    PrintWriter out = new PrintWriter(System.out);
    int argCount = args.length;
    if (argCount > 1) {
      String filename   = null;
      try {
        String cmd      = args[0];
        filename        = args[1];
        if (cmd.equals("get")) {
          writeReader(XMLDocuments.getReader(conn,filename),out);
        }
        else if (cmd.equals("list")) { XMLDocuments.list(conn,filename,out);}
        else if (cmd.equals("delete")) { XMLDocuments.delete(conn,filename);}
        else if (cmd.equals("save") && argCount > 2) {
          String docname = args[2];
          URL    u = URLUtils.newURL(filename);
          Reader r = new InputStreamReader(u.openStream());
          XMLDocuments.save(conn,docname,r);
        }
      }
      catch (FileNotFoundException fnf) {
        out.println("File '"+filename+"' not found.");
      }
    }
    else {
      out.println("usage: XMLDoc [get|delete|list|[save file]] docname");
    }
    out.close(); conn.close();
  }
  // Write a Reader to a Writer
  private static void writeReader(Reader r, Writer out)
  throws IOException {
    char[] buffer = new char[8192];
    int length = -1;
    while ((length = r.read(buffer)) != -1) {
      out.write(buffer, 0, length);
    }
    out.flush();
  }
}