haul 2003/01/21 07:55:50 Modified: . changes.xml src/java/org/apache/cocoon/components/request/multipart FilePart.java FilePartArray.java FilePartFile.java MultipartParser.java src/blocks/databases/java/org/apache/cocoon/util JDBCTypeConversions.java Log: <action dev="CH" type="add" due-to="Geoff Howard" due-to-email="[EMAIL PROTECTED]"> modular.DatabaseActions: added ability to store FileParts from uploads to "ascii", "clob", "blob", and "binary" columns. Added getSize() method to FilePart. </action> Revision Changes Path 1.340 +5 -1 xml-cocoon2/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/changes.xml,v retrieving revision 1.339 retrieving revision 1.340 diff -u -r1.339 -r1.340 --- changes.xml 17 Jan 2003 11:29:22 -0000 1.339 +++ changes.xml 21 Jan 2003 15:55:50 -0000 1.340 @@ -40,6 +40,10 @@ </devs> <release version="@version@" date="@date@"> + <action dev="CH" type="add" due-to="Geoff Howard" due-to-email="[EMAIL PROTECTED]"> + modular.DatabaseActions: added ability to store FileParts from uploads to + "ascii", "clob", "blob", and "binary" columns. Added getSize() method to FilePart. + </action> <action dev="CH" type="add" fixes-bug="9075" due-to="Michael Gerzabek" due-to-email="[EMAIL PROTECTED]"> SAP R/3 connectivity components added. 1.4 +8 -1 xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePart.java Index: FilePart.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePart.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- FilePart.java 23 May 2002 12:01:08 -0000 1.3 +++ FilePart.java 21 Jan 2003 15:55:50 -0000 1.4 @@ -53,6 +53,7 @@ import java.io.InputStream; import java.util.Map; + /** * This (abstract) class represents a file part parsed from a http post stream. * It is subclassed by FilePartFile (which is a file allready written to disk) and @@ -83,6 +84,12 @@ * */ public abstract String getFileName(); + + /** + * Returns the length of the file content + * + */ + public abstract int getSize(); /** * Returns the filepath 1.5 +9 -2 xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePartArray.java Index: FilePartArray.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePartArray.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- FilePartArray.java 17 Sep 2002 15:56:09 -0000 1.4 +++ FilePartArray.java 21 Jan 2003 15:55:50 -0000 1.5 @@ -64,16 +64,19 @@ /** Field in */ private InputStream in = null; + private int size; /** * Constructor FilePartArray * * @param headers * @param in + * @param size */ - protected FilePartArray(Map headers, InputStream in) { + protected FilePartArray(Map headers, InputStream in, int size) { super(headers); this.in = in; + this.size = size; } /** @@ -83,6 +86,10 @@ public String getFileName() { File f = new File((String) headers.get("filename")); return f.getName(); + } + + public int getSize() { + return this.size; } /** 1.6 +7 -1 xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePartFile.java Index: FilePartFile.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/FilePartFile.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FilePartFile.java 3 Oct 2002 04:18:23 -0000 1.5 +++ FilePartFile.java 21 Jan 2003 15:55:50 -0000 1.6 @@ -65,6 +65,7 @@ /** Field file */ private File file = null; + private int size; /** * Constructor FilePartFile @@ -75,6 +76,7 @@ protected FilePartFile(Map headers, File file) { super(headers); this.file = file; + this.size = (int) file.length(); } /** @@ -82,6 +84,10 @@ */ public String getFileName() { return file.getName(); + } + + public int getSize() { + return this.size; } /** 1.5 +2 -2 xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/MultipartParser.java Index: MultipartParser.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/multipart/MultipartParser.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- MultipartParser.java 21 Sep 2002 16:29:33 -0000 1.4 +++ MultipartParser.java 21 Jan 2003 15:55:50 -0000 1.5 @@ -270,7 +270,7 @@ byte[] bytes = ((ByteArrayOutputStream) out).toByteArray(); put(headers.get("name"), - new FilePartArray(headers, new ByteArrayInputStream(bytes))); + new FilePartArray(headers, new ByteArrayInputStream(bytes),bytes.length)); } else { put(headers.get("name"), new FilePartFile(headers, file)); } 1.6 +16 -0 xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/util/JDBCTypeConversions.java Index: JDBCTypeConversions.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/util/JDBCTypeConversions.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JDBCTypeConversions.java 9 Jan 2003 16:53:36 -0000 1.5 +++ JDBCTypeConversions.java 21 Jan 2003 15:55:50 -0000 1.6 @@ -68,6 +68,7 @@ import java.util.HashMap; import java.util.Collections; import org.apache.avalon.framework.configuration.Configuration; +import org.apache.cocoon.components.request.multipart.FilePart; import org.apache.excalibur.source.Source; @@ -305,6 +306,11 @@ asciiStream = new BufferedInputStream(new FileInputStream(asciiFile)); length = (int) asciiFile.length(); clob = new ClobHelper(asciiStream, length); + } else if (value instanceof FilePart) { + FilePart anyFile = (FilePart) value; + asciiStream = new BufferedInputStream(anyFile.getInputStream()); + length = (int) anyFile.getSize(); + clob = new ClobHelper(asciiStream, length); } else if (value instanceof JDBCxlobHelper) { asciiStream = ((JDBCxlobHelper) value).inputStream; length = ((JDBCxlobHelper) value).length; @@ -336,6 +342,11 @@ } else if (value instanceof Source) { asciiStream = ((Source) value).getInputStream(); length = (int)((Source) value).getContentLength(); + } else if (value instanceof FilePart) { + FilePart anyFile = (FilePart) value; + asciiStream = new BufferedInputStream(anyFile.getInputStream()); + length = (int) anyFile.getSize(); + clob = new ClobHelper(asciiStream, length); } else { String asciiText = (String) value; asciiStream = new BufferedInputStream(new ByteArrayInputStream(asciiText.getBytes())); @@ -498,6 +509,9 @@ } else if (value instanceof String) { file = new File((String)value); blob = new BlobHelper(new FileInputStream(file), (int) file.length()); + } else if (value instanceof FilePart) { + FilePart anyFile = (FilePart) value; + blob = new BlobHelper(new BufferedInputStream(anyFile.getInputStream()), anyFile.getSize()); } else { throw new SQLException("Invalid type for blob: "+value.getClass().getName()); } @@ -511,6 +525,8 @@ statement.setBinaryStream(position, ((JDBCxlobHelper)value).inputStream, ((JDBCxlobHelper)value).length); } else if (value instanceof Source){ statement.setBinaryStream(position, ((Source)value).getInputStream(), (int)((Source)value).getContentLength()); + } else if (value instanceof FilePart) { + statement.setBinaryStream(position, ((FilePart)value).getInputStream(), ((FilePart)value).getSize()); } else { if (value instanceof File) { file = (File)value;
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]