KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > SaveModeHandler


1 package com.daffodilwoods.daffodildb.server.serversystem;
2
3 import java.io.*;
4 import java.sql.*;
5
6 import com.daffodilwoods.database.resource.*;
7
8 public class SaveModeHandler implements SaveModeConstants {
9
10   private String JavaDoc databaseHome;
11   private BlobOutPutStream blobStream;
12   private ClobOutPutStream clobStream;
13
14   public SaveModeHandler(String JavaDoc databaseName,String JavaDoc daffodilHome) {
15     databaseHome = daffodilHome + File.separator+ databaseName + File.separator;
16     blobStream = new BlobOutPutStream(databaseHome);
17     clobStream = new ClobOutPutStream(databaseHome);
18   }
19
20   public void write(Object JavaDoc sessionId, Object JavaDoc query) throws DException {
21     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
22     temp.append("\n<connection sessionid=\"")
23         .append(sessionId).append("\" operator=\"")
24         .append(QUERY).append("\" operationType=\"")
25         .append(NON_PREPARED).append("\"><query><![CDATA[")
26         .append(query).append("]]></query></connection>");
27     writeToXmlFile(temp.toString());
28   }
29
30   public void write(Object JavaDoc sessionId, Object JavaDoc query, Object JavaDoc[] params) throws DException {
31     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
32     temp.append("\n<connection sessionid=\"").append(sessionId)
33         .append("\" operator=\"").append(QUERY)
34         .append("\" operationType=\"").append(PREPARED)
35         .append("\"><query><![CDATA[").append(query)
36         .append("]]></query>")
37         .append(getParameters(params))
38         .append("</connection>");
39     writeToXmlFile(temp.toString());
40   }
41
42   public void write(Object JavaDoc sessionId, int queryType, String JavaDoc savePointName) throws DException {
43     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
44     temp.append("\n<connection sessionid=\"").append(sessionId)
45         .append("\" operator=\"").append(METHOD)
46         .append("\" operationType=\"").append(queryType)
47         .append("\"><savepointname>").append(savePointName)
48         .append("</savepointname></connection>");
49     writeToXmlFile(temp.toString());
50   }
51
52   public void write(Object JavaDoc sessionId, int queryType) throws DException {
53     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
54     temp.append("\n<connection sessionid=\"").append(sessionId)
55         .append("\" operator=\"").append(METHOD)
56         .append("\" operationType=\"").append(queryType)
57         .append("\"></connection>");
58     writeToXmlFile(temp.toString());
59   }
60
61   public void write(Object JavaDoc sessionId, String JavaDoc user, String JavaDoc password) throws DException {
62     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
63     temp.append("\n<connection sessionid=\"").append(sessionId)
64         .append("\" operator=\"").append(METHOD)
65         .append("\" operationType=\"").append(STARTCONNECTION)
66         .append("\"><user>").append(user)
67         .append("</user><password>").append(password)
68         .append("</password></connection>");
69     writeToXmlFile(temp.toString());
70   }
71
72   private String JavaDoc getParameters(Object JavaDoc[] params) throws DException {
73     if(params == null)
74       return "";
75     StringBuffer JavaDoc temp = new StringBuffer JavaDoc();
76     try {
77       for (int i = 0; i < params.length; i++) {
78         if (params[i] == null) {
79           temp.append("<param>parametervalueisnull</param>");
80         }
81         else if (params[i] instanceof java.sql.Blob JavaDoc) {
82           java.sql.Blob JavaDoc blobsv = (java.sql.Blob JavaDoc) params[i];
83           temp.append("<param><startposition>")
84               .append(blobStream.getLength())
85               .append("</startposition><length>")
86               .append(blobStream.write(blobsv.getBinaryStream()))
87               .append("</length></param>");
88         }
89         else if (params[i] instanceof java.sql.Clob JavaDoc) {
90           java.sql.Clob JavaDoc clobsv = (java.sql.Clob JavaDoc) params[i];
91           temp.append("<param><startposition>")
92               .append(clobStream.getLength())
93               .append("</startposition>").append("<length>")
94               .append(clobStream.write(clobsv.getAsciiStream()))
95               .append("</length></param>");
96         }
97         else if (params[i] instanceof byte[]) {
98           temp.append("<param>").append(new String JavaDoc( (byte[]) params[i]))
99               .append("</param>");
100         }
101         else {
102           temp.append("<param><![CDATA[" + params[i] + "]]></param>");
103         }
104       }
105     }
106     catch (SQLException ex1) {
107       throw new DException("DSE5557",null);
108     }
109     return temp.toString();
110   }
111
112
113   private synchronized void writeToXmlFile(String JavaDoc data) throws DException {
114     try {
115       String JavaDoc xmlFilePath = databaseHome+XML_FILENAME;
116       File xmlFile = new File(xmlFilePath);
117       boolean FILEEXISTS = xmlFile.exists();
118       if(!FILEEXISTS || xmlFile.length() == 0) {
119           FileOutputStream fos = new FileOutputStream(xmlFilePath,true);
120           OutputStreamWriter osw = new OutputStreamWriter(fos);
121           osw.write(
122               "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><transactions>");
123           osw.close();
124           fos.close();
125       }
126       FileOutputStream fos = new FileOutputStream(xmlFilePath,true);
127       OutputStreamWriter osw = new OutputStreamWriter(fos);
128       osw.write(data);
129       osw.close();
130       fos.close();
131     }
132     catch (FileNotFoundException ex) {
133       throw new DException("DSE5551" ,new Object JavaDoc[] {databaseHome});
134     }
135     catch (IOException ex) {
136       throw new DException("DSE5554",null);
137     }
138   }
139 }
140
Popular Tags