cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From blorit...@apache.org
Subject cvs commit: xml-cocoon/src/org/apache/cocoon/acting AbstractDatabaseAction.java
Date Wed, 14 Mar 2001 16:28:57 GMT
bloritsch    01/03/14 08:28:57

  Modified:    src/org/apache/cocoon/acting Tag: xml-cocoon2
                        AbstractDatabaseAction.java
  Log:
  Added support so that setting the values in the database use Parameters and
  Attributes, and added framework for getting values from the DB.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.21  +182 -23   xml-cocoon/src/org/apache/cocoon/acting/Attic/AbstractDatabaseAction.java
  
  Index: AbstractDatabaseAction.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/acting/Attic/AbstractDatabaseAction.java,v
  retrieving revision 1.1.2.20
  retrieving revision 1.1.2.21
  diff -u -r1.1.2.20 -r1.1.2.21
  --- AbstractDatabaseAction.java	2001/03/12 15:52:42	1.1.2.20
  +++ AbstractDatabaseAction.java	2001/03/14 16:28:54	1.1.2.21
  @@ -16,6 +16,8 @@
   import java.sql.Ref;
   import java.sql.SQLException;
   import java.sql.Types;
  +import java.sql.Blob;
  +import java.sql.Clob;
   import java.net.URL;
   import java.io.File;
   import java.io.InputStream;
  @@ -172,7 +174,7 @@
    * </table>
    *
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  - * @version CVS $Revision: 1.1.2.20 $ $Date: 2001/03/12 15:52:42 $
  + * @version CVS $Revision: 1.1.2.21 $ $Date: 2001/03/14 16:28:54 $
    */
   public abstract class AbstractDatabaseAction extends AbstractComplimentaryConfigurableAction
implements Configurable {
       protected Map files = new HashMap();
  @@ -233,9 +235,84 @@
       }
   
       /**
  +     * Get the Statement column so that the results are mapped correctly.
  +     */
  +    protected Object getColumn(ResultSet set, HttpRequest request, Configuration entry)
  +    throws Exception {
  +        Integer type = (Integer) AbstractDatabaseAction.typeConstants.get(entry.getAttribute("type"));
  +        String attribute = entry.getAttribute("param", "");
  +        String dbcol = entry.getAttribute("dbcol", "");
  +        Object value = null;
  +
  +        switch (type.intValue()) {
  +            case Types.CLOB:
  +                Clob dbClob = set.getClob(dbcol);
  +                int length = (int) dbClob.length();
  +                InputStream asciiStream = new BufferedInputStream(dbClob.getAsciiStream());
  +                byte[] buffer = new byte[length];
  +                asciiStream.read(buffer);
  +                String str = new String(buffer);
  +                asciiStream.close();
  +                value = str;
  +                break;
  +            case Types.BIGINT:
  +                value = set.getBigDecimal(dbcol);
  +                break;
  +            case Types.TINYINT:
  +                value = new Byte(set.getByte(dbcol));
  +                break;
  +            case Types.VARCHAR:
  +                value  = set.getString(dbcol);
  +                break;
  +            case Types.DATE:
  +                value = set.getDate(dbcol);
  +                break;
  +            case Types.DOUBLE:
  +                value = new Double(set.getDouble(dbcol));
  +                break;
  +            case Types.FLOAT:
  +                value = new Float(set.getFloat(dbcol));
  +                break;
  +            case Types.INTEGER:
  +                value = new Integer(set.getInt(dbcol));
  +                break;
  +            case Types.NUMERIC:
  +                value = new Long(set.getLong(dbcol));
  +                break;
  +            case Types.SMALLINT:
  +                value = new Short(set.getShort(dbcol));
  +                break;
  +            case Types.TIME:
  +                value = set.getTime(dbcol);
  +                break;
  +            case Types.TIMESTAMP:
  +                value = set.getTimestamp(dbcol);
  +                break;
  +            case Types.ARRAY:
  +                value = new Integer(set.getInt(dbcol));
  +                break;
  +            case Types.BIT:
  +                value = new Integer(set.getInt(dbcol));
  +                break;
  +            case Types.CHAR:
  +                value = new Integer(set.getInt(dbcol));
  +                break;
  +            default:
  +                // The blob types have to be requested separately, via a Reader.
  +                value = "";
  +                break;
  +        }
  +
  +        request.setAttribute(attribute, value);
  +
  +        return value;
  +    }
  +
  +    /**
        * Set the Statement column so that the results are mapped correctly.
        */
  -    protected void setColumn(PreparedStatement statement, int position, HttpRequest request,
Configuration entry) throws Exception {
  +    protected void setColumn(PreparedStatement statement, int position, HttpRequest request,
Configuration entry)
  +    throws Exception {
           Integer typeObject = (Integer) AbstractDatabaseAction.typeConstants.get(entry.getAttribute("type"));
   
           if (typeObject == null) {
  @@ -243,9 +320,13 @@
           }
   
           String attribute = entry.getAttribute("param", "");
  -        String value = request.getParameter(attribute);
  +        Object value = request.get(attribute);
  +
  +        if (value instanceof String) {
  +            value = ((String) value).trim();
  +        }
   
  -        if (value == null || "".equals(value.trim())) {
  +        if (value == null || "".equals(value)) {
               switch (typeObject.intValue()) {
                   case Types.DISTINCT:
                       statement.setNull(position, Types.BINARY);
  @@ -253,8 +334,7 @@
                   case Types.ARRAY:
                   case Types.BIT:
                   case Types.CHAR:
  -                    File imageFile = (File) request.get(attribute);
  -                    if (imageFile == null) {
  +                    if (value == null) {
                           statement.setNull(position, Types.INTEGER);
                       }
                       break;
  @@ -271,16 +351,15 @@
   
           switch (typeObject.intValue()) {
               case Types.CLOB:
  -                Object attr = request.get(attribute);
                   int length = -1;
                   InputStream asciiStream = null;
   
  -                if (attr instanceof File) {
  -                    File asciiFile = (File) attr;
  +                if (value instanceof File) {
  +                    File asciiFile = (File) value;
                       asciiStream = new BufferedInputStream(new FileInputStream(asciiFile));
                       length = (int) asciiFile.length();
                   } else {
  -                    String asciiText = (String) attr;
  +                    String asciiText = (String) value;
                       asciiStream = new BufferedInputStream(new ByteArrayInputStream(asciiText.getBytes()));
                       length = asciiText.length();
                   }
  @@ -288,42 +367,122 @@
                   statement.setAsciiStream(position, asciiStream, length);
                   break;
               case Types.BIGINT:
  -                statement.setBigDecimal(position, new BigDecimal((String) value));
  +                BigDecimal bd = null;
  +
  +                if (value instanceof BigDecimal) {
  +                    bd = (BigDecimal) value;
  +                } else {
  +                    bd = new BigDecimal((String) value);
  +                }
  +
  +                statement.setBigDecimal(position, bd);
                   break;
               case Types.BLOB:
  -                File binaryFile = (File) request.get(attribute);
  +                File binaryFile = (File) value;
                   InputStream binaryStream = new BufferedInputStream(new FileInputStream(binaryFile));
                   statement.setBinaryStream(position, binaryStream, (int) binaryFile.length());
                   break;
               case Types.TINYINT:
  -                statement.setByte(position, (new Byte(value)).byteValue());
  +                Byte b = null;
  +
  +                if (value instanceof Byte) {
  +                    b = (Byte) value;
  +                } else {
  +                    b = new Byte((String) value);
  +                }
  +
  +                statement.setByte(position, b.byteValue());
                   break;
               case Types.VARCHAR:
  -                statement.setString(position, value);
  +                statement.setString(position, (String) value);
                   break;
               case Types.DATE:
  -                statement.setDate(position, new Date(this.dateValue(value, entry.getAttribute("format",
"M/d/yyyy"))));
  +                Date d = null;
  +
  +                if (value instanceof Date) {
  +                    d = (Date) value;
  +                } else {
  +                    d = new Date(this.dateValue((String) value, entry.getAttribute("format",
"M/d/yyyy")));
  +                }
  +
  +                statement.setDate(position, d);
                   break;
               case Types.DOUBLE:
  -                statement.setDouble(position, (new Double(value)).doubleValue());
  +                Double db = null;
  +
  +                if (value instanceof Double) {
  +                    db = (Double) value;
  +                } else {
  +                    db = new Double((String) value);
  +                }
  +
  +                statement.setDouble(position, db.doubleValue());
                   break;
               case Types.FLOAT:
  -                statement.setFloat(position, (new Float(value)).floatValue());
  +                Float f = null;
  +
  +                if (value instanceof Float) {
  +                    f = (Float) value;
  +                } else {
  +                    f = new Float((String) value);
  +                }
  +
  +                statement.setFloat(position, f.floatValue());
                   break;
               case Types.INTEGER:
  -                statement.setInt(position, (new Integer(value)).intValue());
  +                Integer i = null;
  +
  +                if (value instanceof Integer) {
  +                    i = (Integer) value;
  +                } else {
  +                    i = new Integer((String) value);
  +                }
  +
  +                statement.setInt(position, i.intValue());
                   break;
               case Types.NUMERIC:
  -                statement.setLong(position, (new Long(value)).longValue());
  +                Long l = null;
  +
  +                if (value instanceof Long) {
  +                    l = (Long) value;
  +                } else {
  +                    l = new Long((String) value);
  +                }
  +
  +                statement.setLong(position, l.longValue());
                   break;
               case Types.SMALLINT:
  -                statement.setShort(position, (new Short(value)).shortValue());
  +                Short s = null;
  +
  +                if (value instanceof Short) {
  +                    s = (Short) value;
  +                } else {
  +                    s = new Short((String) value);
  +                }
  +
  +                statement.setShort(position, s.shortValue());
                   break;
               case Types.TIME:
  -                statement.setTime(position, new Time(this.dateValue(value, entry.getAttribute("format",
"h:m:s a"))));
  +                Time t = null;
  +
  +                if (value instanceof Time) {
  +                    t = (Time) value;
  +                } else {
  +                    t = new Time(this.dateValue((String) value, entry.getAttribute("format",
"h:m:s a")));
  +                }
  +
  +                statement.setTime(position, t);
                   break;
               case Types.TIMESTAMP:
  -                statement.setTimestamp(position, new Timestamp(this.dateValue(value, entry.getAttribute("format",
"M/d/yyyy h:m:s a"))));
  +                Timestamp ts = null;
  +
  +                if (value instanceof Time) {
  +                    ts = (Timestamp) value;
  +                } else {
  +                    ts = new Timestamp(this.dateValue((String) value, entry.getAttribute("format",
"M/d/yyyy h:m:s a")));
  +                }
  +
  +                statement.setTimestamp(position, ts);
                   break;
               case Types.OTHER:
                   statement.setTimestamp(position, new Timestamp((new java.util.Date()).getTime()));
  @@ -331,7 +490,7 @@
               case Types.DISTINCT:
                   // Upload an image (just like binary), but cache attributes
                   Parameters param = new Parameters();
  -                File imageFile = (File) request.get(attribute);
  +                File imageFile = (File) value;
                   InputStream imageStream = new BufferedInputStream(new FileInputStream(imageFile));
                   statement.setBinaryStream(position, imageStream, (int) imageFile.length());
   
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org


Mime
View raw message