haul 2003/01/31 08:01:42
Modified: src/blocks/databases/java/org/apache/cocoon/reading
DatabaseReader.java
Log:
optionally read mimetype from database
Revision Changes Path
1.3 +26 -6
xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java
Index: DatabaseReader.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/reading/DatabaseReader.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DatabaseReader.java 7 Jan 2003 23:56:09 -0000 1.2
+++ DatabaseReader.java 31 Jan 2003 16:01:42 -0000 1.3
@@ -53,7 +53,6 @@
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -100,9 +99,11 @@
private ComponentSelector dbselector;
private String dsn;
private long lastModified = System.currentTimeMillis();
- private Blob resource = null;
+ private InputStream resource = null; // because HSQL doesn't yet implement
getBlob()
private Connection con = null;
private DataSourceComponent datasource = null;
+ private String mimeType = null;
+ private int typeColumn = 0;
private boolean doCommit = false;
private boolean defaultCache = true;
@@ -149,7 +150,10 @@
Request request = ObjectModelHelper.getRequest(objectModel);
if (this.modifiedSince(set, request, response)) {
- this.resource = set.getBlob(1);
+ this.resource = set.getBinaryStream(1);
+ if (this.typeColumn != 0) {
+ this.mimeType = set.getString(this.typeColumn);
+ }
if (this.resource == null) {
throw new ResourceNotFoundException("There is no resource with
that key");
@@ -184,6 +188,7 @@
* <pre>
* <parameter name="last-modified"
value="database_timestamp_column_name"/>
* <parameter name="content-type" value="content_mime_type"/>
+ * <parameter name="type-column"
value="database_content_mime_type_column"/>
* <parameter name="expires" value="number_of_millis_before_refresh"/>
* <parameter name="where" value="alternate_key = 'foo'"/>
* <parameter name="order-by" value="alternate_key DESC"/>
@@ -218,6 +223,8 @@
String key = this.parameters.getParameter("key", null);
String where = this.parameters.getParameter("where", null);
String orderBy = this.parameters.getParameter("order-by", null);
+ String typeColumn = this.parameters.getParameter("type-column", null);
+ int columnNo = 1;
if (table == null || column == null || key==null) {
throw new ProcessingException("We are missing a required parameter.
Please include 'table', 'image', and 'key'");
@@ -227,9 +234,11 @@
StringBuffer query = new StringBuffer("SELECT ");
query.append(column);
+ columnNo++;
if (date != null) {
query.append(", ").append(date);
+ columnNo++;
}
if (null != orderBy) {
@@ -240,6 +249,13 @@
} else {
query.append(orderBy);
}
+ columnNo++;
+ }
+
+ if (null != typeColumn) {
+ query.append(", ").append(typeColumn);
+ this.typeColumn = columnNo;
+ columnNo++;
}
query.append(" FROM ").append(table);
@@ -299,7 +315,7 @@
throw new SQLException("The Blob is empty!");
}
- InputStream is = new BufferedInputStream(this.resource.getBinaryStream());
+ InputStream is = new BufferedInputStream(this.resource);
long expires = parameters.getParameterAsInteger("expires", -1);
@@ -351,6 +367,8 @@
super.recycle();
this.resource = null;
this.lastModified = 0;
+ this.mimeType = null;
+ this.typeColumn = 0;
if (this.con != null) {
try {
@@ -387,7 +405,9 @@
}
public String getMimeType() {
- return this.parameters.getParameter("content-type", super.getMimeType());
+ return (this.mimeType != null ?
+ this.mimeType :
+ this.parameters.getParameter("content-type", super.getMimeType()));
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]