001: /*
002: Copyright (C) 2003 Together
003:
004: This library is free software; you can redistribute it and/or
005: modify it under the terms of the GNU Lesser General Public
006: License as published by the Free Software Foundation; either
007: version 2.1 of the License, or (at your option) any later version.
008:
009: This library is distributed in the hope that it will be useful,
010: but WITHOUT ANY WARRANTY; without even the implied warranty of
011: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: Lesser General Public License for more details.
013:
014: You should have received a copy of the GNU Lesser General Public
015: License along with this library; if not, write to the Free Software
016: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package org.webdocwf.util.xml;
020:
021: import java.sql.*;
022: import java.util.Properties;
023: import java.io.File;
024: import java.io.RandomAccessFile;
025:
026: /**
027: * Class implements the JDBC Driver interface for the XmlJdbc driver.
028: *
029: * @author Zoran Milakovic
030: */
031:
032: public class XmlDriver implements Driver {
033:
034: public static final String DEFAULT_EXTENSION = ".xml";
035: public static final String FILE_EXTENSION = "fileExtension";
036: private final static String URL_PREFIX = "jdbc:webdocwf:xml:";
037: private Properties info = null;
038: private String filePath;
039:
040: /* If set to true, driver will log into xmldriver.log file, in working directory */
041: private static boolean ENABLE_LOG = false;
042:
043: /**
044: *Gets the propertyInfo attribute of the XmlDriver object
045: *
046: * @param url Description of Parameter
047: * @param info Description of Parameter
048: * @return The propertyInfo value
049: * @exception SQLException Description of Exception
050: * @since
051: */
052: public DriverPropertyInfo[] getPropertyInfo(String url,
053: Properties info) throws SQLException {
054: return new DriverPropertyInfo[0];
055: }
056:
057: /**
058: *Gets the majorVersion attribute of the XmlDriver object
059: *
060: * @return The majorVersion value
061: * @since
062: */
063: public int getMajorVersion() {
064: return 1;
065: }
066:
067: /**
068: *Gets the minorVersion attribute of the XmlDriver object
069: *
070: * @return The minorVersion value
071: * @since
072: */
073: public int getMinorVersion() {
074: return 0;
075: }
076:
077: /**
078: *Description of the Method
079: *
080: * @param url Description of Parameter
081: * @param info Description of Parameter
082: * @return Description of the Returned Value
083: * @exception SQLException Description of Exception
084: * @since
085: */
086: public Connection connect(String url, Properties info)
087: throws SQLException {
088: DriverManager.println("XmlJdbc - XmlDriver:connect() - url="
089: + url);
090: // check for correct url
091: if (!url.startsWith(URL_PREFIX)) {
092: return null;
093: }
094: // get filepath from url
095: this .filePath = url.substring(URL_PREFIX.length());
096: //if file do not ends with .xml,add one
097: if (!filePath.endsWith(".xml")) {
098: this .filePath += this .DEFAULT_EXTENSION;
099: }
100: DriverManager
101: .println("XmlJdbc - XmlDriver:connect() - filePath="
102: + filePath);
103: // check if filepath is a correct path.
104: // File checkPath;
105: // checkPath = new File(filePath);
106: //
107: // if (!checkPath.exists())
108: // {
109: // this.createDatabase();
110: // }
111: return new XmlConnection(filePath, info);
112: }
113:
114: /**
115: *Description of the Method
116: *
117: * @param url Description of Parameter
118: * @return Description of the Returned Value
119: * @exception SQLException Description of Exception
120: * @since
121: */
122: public boolean acceptsURL(String url) throws SQLException {
123: DriverManager.println("XmlJdbc - XmlDriver:accept() - url="
124: + url);
125: return url.startsWith(URL_PREFIX);
126: }
127:
128: /**
129: *Description of the Method
130: *
131: * @return Description of the Returned Value
132: * @since
133: */
134: public boolean jdbcCompliant() {
135: return false;
136: }
137:
138: // This static block inits the driver when the class is loaded by the JVM.
139: static {
140: try {
141: java.sql.DriverManager.registerDriver(new XmlDriver());
142: } catch (SQLException e) {
143: throw new RuntimeException(
144: "FATAL ERROR: Could not initialise Xml driver ! Message was: "
145: + e.getMessage());
146: }
147: }
148:
149: public static void log(String message) {
150: if (XmlDriver.ENABLE_LOG) {
151: try {
152: File file = new File("xmldriver.log");
153: if (!file.exists())
154: file.createNewFile();
155: java.io.RandomAccessFile fileLogr = new java.io.RandomAccessFile(
156: file, "rw");
157: fileLogr.seek(fileLogr.length());
158: fileLogr.writeBytes("XmlJdbc, " + message + "\r\n");
159: fileLogr.close();
160: } catch (Exception ex) {
161: ex.printStackTrace();
162: }
163: }
164: }
165:
166: }
|