hammant 01/11/17 02:12:09
Modified: apps/db/src/java/org/apache/avalon/db/basic/actions
BasicInsertRows.java
apps/db/src/java/org/apache/avalon/db/data Column.java
apps/db/src/java/org/apache/avalon/db/data/impl
BigIntColumn.java DateColumn.java
DecimalColumn.java IntegerColumn.java
RealColumn.java SmallIntColumn.java TimeColumn.java
TimestampColumn.java VarCharColumn.java
apps/db/src/java/org/apache/avalon/db/test Tester.java
Added: apps/db/src/java/org/apache/avalon/db/data
WritableColumn.java
apps/db/src/java/org/apache/avalon/db/data/impl
AbstractWritableColumn.java
Log:
column rework : split into writable types and simplified convert function
Revision Changes Path
1.2 +6 -4
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicInsertRows.java
Index: BasicInsertRows.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicInsertRows.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicInsertRows.java 2001/11/15 14:29:56 1.1
+++ BasicInsertRows.java 2001/11/17 10:12:08 1.2
@@ -15,6 +15,7 @@
import org.apache.avalon.db.basic.data.BasicTable;
import org.apache.avalon.db.data.Column;
import org.apache.avalon.db.data.ValidationException;
+import org.apache.avalon.db.data.WritableColumn;
import org.apache.avalon.framework.logger.LogEnabled;
@@ -32,7 +33,7 @@
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class BasicInsertRows extends AbstractAction implements
InsertRows,LogEnabled {
@@ -100,10 +101,11 @@
String colName = rowNode.getAttribute("col");
String valueStr =
rowNode.getFirstChild().getNodeValue();
int ix = mTable.getColumnIndex(colName);
- // TODO perhaps columns could know their own index?
Column col = mTable.getColumn(colName);
- col.test(valueStr);
- values[ix] = col.convertFromString(valueStr);
+ if (col instanceof WritableColumn) {
+ WritableColumn wCol = (WritableColumn) col;
+ values[ix] = wCol.convertFromObject(valueStr);
+ }
}
}
Vector pendingRow = new Vector();
1.9 +1 -3
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/Column.java
Index: Column.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/Column.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Column.java 2001/11/14 17:05:33 1.8
+++ Column.java 2001/11/17 10:12:09 1.9
@@ -14,12 +14,10 @@
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version * $Revision: 1.8 $
+ * @version * $Revision: 1.9 $
*/
public interface Column extends Nameable {
- void test(Object obj) throws ValidationException;
- Object convertFromString(String str) throws ValidationException;
Object getValue(Row row);
void setIndex(int ix);
1.1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/WritableColumn.java
Index: WritableColumn.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.db.data;
/**
* Interface WritableColumn
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @version * $Revision: 1.1 $
*/
public interface WritableColumn extends Column {
Object convertFromObject(Object obj) throws ValidationException;
}
1.4 +5 -13
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/BigIntColumn.java
Index: BigIntColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/BigIntColumn.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BigIntColumn.java 2001/11/14 18:52:14 1.3
+++ BigIntColumn.java 2001/11/17 10:12:09 1.4
@@ -14,9 +14,9 @@
* Class BigIntColumn
*
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
-public class BigIntColumn extends AbstractColumn implements NumericType {
+public class BigIntColumn extends AbstractWritableColumn implements
NumericType {
/**
* Constructor BigIntColumn
@@ -26,25 +26,17 @@
super(name,"bigint",Long.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
if (obj instanceof String) {
- Long.parseLong(obj.toString());
+ return Long.valueOf(obj.toString());
} else if (obj instanceof Long) {
- // OK
+ return obj;
} else {
throw new ValidationException("Bigint " + mName + " is not
passed up as String or Long");
}
} catch (NumberFormatException nfe) {
throw new ValidationException("Bigint " + mName + " is not a
valid number (" + obj + ")");
- }
- }
-
- public Object convertFromString(String str) throws ValidationException {
- try {
- return new Long(str);
- } catch (NumberFormatException nfe) {
- throw new ValidationException("Bigint " + mName + " is not a
valid number (" + str + ")");
}
}
}
1.3 +5 -16
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DateColumn.java
Index: DateColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DateColumn.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DateColumn.java 2001/11/14 18:52:14 1.2
+++ DateColumn.java 2001/11/17 10:12:09 1.3
@@ -17,9 +17,9 @@
* Class DateColumn
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
-public class DateColumn extends AbstractColumn implements TemporalType {
+public class DateColumn extends AbstractWritableColumn implements
TemporalType {
/**
* Constructor DateColumn
@@ -29,13 +29,12 @@
super(name,"date", Date.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
- Date t;
if (obj instanceof String) {
- t = Date.valueOf((String) obj);
+ return Date.valueOf(obj.toString());
} else if (obj instanceof Date) {
- // all OK
+ return obj;
} else {
throw new ValidationException("Date object named " + mName +
" not recognised as String or Date");
}
@@ -43,14 +42,4 @@
throw new ValidationException("Date " + mName + " is not a valid
format (" + obj + ")");
}
}
-
- public Object convertFromString(String str) throws ValidationException {
- test(str);
- try {
- return Date.valueOf((String) str);
- } catch (IllegalArgumentException nfe) {
- throw new ValidationException("Date object named " + mName + "
not recognised as String or Date");
- }
- }
-
}
1.4 +5 -13
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DecimalColumn.java
Index: DecimalColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DecimalColumn.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DecimalColumn.java 2001/11/14 18:52:14 1.3
+++ DecimalColumn.java 2001/11/17 10:12:09 1.4
@@ -16,9 +16,9 @@
* Class DecimalColumn
*
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
-public class DecimalColumn extends AbstractColumn implements NumericType {
+public class DecimalColumn extends AbstractWritableColumn implements
NumericType {
/**
* Constructor DecimalColumn
@@ -28,25 +28,17 @@
super(name,"decimal",BigDecimal.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
if (obj instanceof String) {
- BigDecimal bd = new BigDecimal(obj.toString());
+ return new BigDecimal(obj.toString());
} else if (obj instanceof BigDecimal) {
- // OK
+ return obj;
} else {
throw new ValidationException("Decimal " + mName + " is not
passed up as String or BigDecimal");
}
} catch (NumberFormatException nfe) {
throw new ValidationException("Decimal " + mName + " is not a
valid number (" + obj + ")");
- }
- }
-
- public Object convertFromString(String str) throws ValidationException {
- try {
- return new BigDecimal(str);
- } catch (NumberFormatException nfe) {
- throw new ValidationException("Decimal " + mName + " is not a
valid number (" + str + ")");
}
}
}
1.4 +10 -13
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/IntegerColumn.java
Index: IntegerColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/IntegerColumn.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- IntegerColumn.java 2001/11/14 18:52:14 1.3
+++ IntegerColumn.java 2001/11/17 10:12:09 1.4
@@ -17,9 +17,9 @@
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
-public class IntegerColumn extends AbstractColumn implements NumericType {
+public class IntegerColumn extends AbstractWritableColumn implements
NumericType {
/**
* Constructor IntegerColumn
@@ -32,20 +32,17 @@
super(name,"integer",Integer.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
- int i = Integer.parseInt(obj.toString());
+ if (obj instanceof String) {
+ return Integer.valueOf(obj.toString());
+ } else if (obj instanceof Integer) {
+ return obj;
+ } else {
+ throw new ValidationException("Integer " + mName + " is not
passed up as String or Integer");
+ }
} catch (NumberFormatException nfe) {
throw new ValidationException("Integer " + mName + " is not a
valid number (" + obj + ")");
}
}
-
- public Object convertFromString(String str) throws ValidationException {
- try {
- return new Integer(str);
- } catch (NumberFormatException nfe) {
- throw new ValidationException("Integer " + mName + " is not a
valid number (" + str + ")");
- }
- }
-
}
1.4 +5 -13
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/RealColumn.java
Index: RealColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/RealColumn.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RealColumn.java 2001/11/14 18:52:14 1.3
+++ RealColumn.java 2001/11/17 10:12:09 1.4
@@ -14,9 +14,9 @@
* Class RealColumn
*
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
-public class RealColumn extends AbstractColumn implements NumericType {
+public class RealColumn extends AbstractWritableColumn implements
NumericType {
/**
* Constructor RealColumn
@@ -26,25 +26,17 @@
super(name,"real",Float.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
if (obj instanceof String) {
- Float.parseFloat(obj.toString());
+ return Float.valueOf(obj.toString());
} else if (obj instanceof Float) {
- // OK
+ return obj;
} else {
throw new ValidationException("Real " + mName + " is not
passed up as String or Float");
}
} catch (NumberFormatException nfe) {
throw new ValidationException("Real " + mName + " is not a valid
number (" + obj + ")");
- }
- }
-
- public Object convertFromString(String str) throws ValidationException {
- try {
- return new Float(str);
- } catch (NumberFormatException nfe) {
- throw new ValidationException("Real " + mName + " is not a valid
number (" + str + ")");
}
}
}
1.5 +5 -14
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/SmallIntColumn.java
Index: SmallIntColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/SmallIntColumn.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SmallIntColumn.java 2001/11/14 18:52:14 1.4
+++ SmallIntColumn.java 2001/11/17 10:12:09 1.5
@@ -14,9 +14,9 @@
* Class SmallIntColumn
*
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
-public class SmallIntColumn extends AbstractColumn implements NumericType {
+public class SmallIntColumn extends AbstractWritableColumn implements
NumericType {
/**
* Constructor SmallIntColumn
@@ -26,12 +26,12 @@
super(name,"smallint",Short.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
if (obj instanceof String) {
- Short.parseShort(obj.toString());
+ return Short.valueOf(obj.toString());
} else if (obj instanceof Short) {
- // OK
+ return obj;
} else {
throw new ValidationException("Smallint " + mName + " is not
passed up as String or Short");
}
@@ -39,13 +39,4 @@
throw new ValidationException("SmallInt " + mName + " is not a
valid number (" + obj + ")");
}
}
-
- public Object convertFromString(String str) throws ValidationException {
- try {
- return new Short(str);
- } catch (NumberFormatException nfe) {
- throw new ValidationException("SmallInt " + mName + " is not a
valid number (" + str + ")");
- }
- }
-
}
1.3 +5 -16
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/TimeColumn.java
Index: TimeColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/TimeColumn.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TimeColumn.java 2001/11/14 18:52:14 1.2
+++ TimeColumn.java 2001/11/17 10:12:09 1.3
@@ -16,9 +16,9 @@
* Class TimeColumn
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
-public class TimeColumn extends AbstractColumn implements TemporalType {
+public class TimeColumn extends AbstractWritableColumn implements
TemporalType {
/**
* Constructor TimeColumn
@@ -28,13 +28,12 @@
super(name,"time", Time.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
- Time t;
if (obj instanceof String) {
- t = Time.valueOf((String) obj);
+ return Time.valueOf(obj.toString());
} else if (obj instanceof Time) {
- // all OK
+ return obj;
} else {
throw new ValidationException("Time object named " + mName +
" not recognised as String or Time");
}
@@ -42,14 +41,4 @@
throw new ValidationException("Time " + mName + " is not a valid
format (" + obj + ")");
}
}
-
- public Object convertFromString(String str) throws ValidationException {
- test(str);
- try {
- return Time.valueOf((String) str);
- } catch (IllegalArgumentException nfe) {
- throw new ValidationException("Time object named " + mName + "
not recognised as String or Time");
- }
- }
-
}
1.3 +5 -16
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/TimestampColumn.java
Index: TimestampColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/TimestampColumn.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TimestampColumn.java 2001/11/14 18:52:14 1.2
+++ TimestampColumn.java 2001/11/17 10:12:09 1.3
@@ -16,9 +16,9 @@
* Class TimestampColumn
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
-public class TimestampColumn extends AbstractColumn implements TemporalType {
+public class TimestampColumn extends AbstractWritableColumn implements
TemporalType {
/**
* Constructor TimestampColumn
@@ -28,13 +28,12 @@
super(name,"timestamp", Timestamp.class.getName());
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
try {
- Timestamp ts;
if (obj instanceof String) {
- ts = Timestamp.valueOf((String) obj);
+ return Timestamp.valueOf(obj.toString());
} else if (obj instanceof Timestamp) {
- // all OK
+ return obj;
} else {
throw new ValidationException("Timestamp object named " +
mName + " not recognised as String or Timestamp");
}
@@ -42,14 +41,4 @@
throw new ValidationException("Timestamp " + mName + " is not a
valid format (" + obj + ")");
}
}
-
- public Object convertFromString(String str) throws ValidationException {
- test(str);
- try {
- return Timestamp.valueOf((String) str);
- } catch (IllegalArgumentException nfe) {
- throw new ValidationException("Timestamp object named " + mName
+ " not recognised as String or Timestamp");
- }
- }
-
}
1.5 +3 -7
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/VarCharColumn.java
Index: VarCharColumn.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/VarCharColumn.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- VarCharColumn.java 2001/11/14 18:52:14 1.4
+++ VarCharColumn.java 2001/11/17 10:12:09 1.5
@@ -18,9 +18,9 @@
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>*
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
-public class VarCharColumn extends AbstractColumn implements StringType {
+public class VarCharColumn extends AbstractWritableColumn implements
StringType {
private int mMaxLength;
@@ -37,15 +37,11 @@
mMaxLength = maxLength;
}
- public void test(Object obj) throws ValidationException {
+ public Object convertFromObject(Object obj) throws ValidationException {
String str = (String) obj;
if (str.length() > mMaxLength) {
throw new ValidationException("String " + mName + " is too long
at " + str.length());
}
- }
-
- public Object convertFromString(String str) throws ValidationException {
- test(str);
return str;
}
}
1.1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractWritableColumn.java
Index: AbstractWritableColumn.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.db.data.impl;
import org.apache.avalon.db.data.Table;
import org.apache.avalon.db.data.Queryable;
import org.apache.avalon.db.data.Column;
import org.apache.avalon.db.data.Row;
import org.apache.avalon.db.data.WritableColumn;
/**
* Class AbstractWritableColumn
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>*
* @version $Revision: 1.1 $
*/
public abstract class AbstractWritableColumn extends AbstractColumn
implements WritableColumn {
public AbstractWritableColumn(String name, String sqlType, String
javaType) {
super(name,sqlType,javaType);
}
}
1.21 +1 -1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java
Index: Tester.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- Tester.java 2001/11/16 06:36:59 1.20
+++ Tester.java 2001/11/17 10:12:09 1.21
@@ -170,7 +170,7 @@
tester.test();
tester.close();
} catch (Exception e) {
- System.out.println("Some problem during running of test " +
e.getMessage());
+ System.out.println("Some problem during running of test : "
+ e.getMessage());
e.printStackTrace();
}
// } else {
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>