Return-Path: X-Original-To: apmail-incubator-empire-db-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-empire-db-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7C63D689A for ; Tue, 19 Jul 2011 16:54:08 +0000 (UTC) Received: (qmail 70361 invoked by uid 500); 19 Jul 2011 16:54:08 -0000 Delivered-To: apmail-incubator-empire-db-commits-archive@incubator.apache.org Received: (qmail 70333 invoked by uid 500); 19 Jul 2011 16:54:07 -0000 Mailing-List: contact empire-db-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: empire-db-dev@incubator.apache.org Delivered-To: mailing list empire-db-commits@incubator.apache.org Received: (qmail 70324 invoked by uid 99); 19 Jul 2011 16:54:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jul 2011 16:54:07 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jul 2011 16:54:03 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A0C05238885D; Tue, 19 Jul 2011 16:53:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1148444 [1/4] - in /incubator/empire-db/branches/EMPIREDB-99/empire-db/src: main/java/org/apache/empire/ main/java/org/apache/empire/commons/ main/java/org/apache/empire/data/ main/java/org/apache/empire/data/bean/ main/java/org/apache/emp... Date: Tue, 19 Jul 2011 16:53:41 -0000 To: empire-db-commits@incubator.apache.org From: doebele@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110719165343.A0C05238885D@eris.apache.org> Author: doebele Date: Tue Jul 19 16:53:34 2011 New Revision: 1148444 URL: http://svn.apache.org/viewvc?rev=1148444&view=rev Log: basic changes (not yet complete!) Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/EmpireException.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/commons/ErrorObject.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/Record.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/RecordData.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBColumn.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCombinedCmd.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommand.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBErrors.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBObject.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBQuery.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBReader.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBRecord.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBTable.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBView.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/derby/DBDatabaseDriverDerby.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/h2/DBDatabaseDriverH2.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/hsql/DBDatabaseDriverHSql.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/mysql/DBDatabaseDriverMySQL.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/oracle/DBCommandOracle.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/oracle/DBDatabaseDriverOracle.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/postgresql/DBDatabaseDriverPostgreSQL.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/sqlserver/DBDatabaseDriverMSSQL.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/xml/XMLConfiguration.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/test/java/org/apache/empire/db/DBCommandTest.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/test/java/org/apache/empire/db/IntegerTest.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/test/java/org/apache/empire/db/PreparedStatementTest.java incubator/empire-db/branches/EMPIREDB-99/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/EmpireException.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/EmpireException.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/EmpireException.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/EmpireException.java Tue Jul 19 16:53:34 2011 @@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory; * Exceptions will only be thrown if exceptions are enabled in the ErrorObject. * @see ErrorObject#setExceptionsEnabled(boolean) */ -public final class EmpireException extends RuntimeException +public class EmpireException extends RuntimeException { // Logger private static final Logger log = LoggerFactory.getLogger(ErrorObject.class); @@ -99,30 +99,32 @@ public final class EmpireException exten } /** - * Constructor + * Constructor for derived classes * @param errType * @param params + * @param cause */ - public EmpireException(final ErrorType errType, final Object... params) + public EmpireException(final ErrorType errType, final Object[] params, final Throwable cause) { - super(formatErrorMessage(errType, params)); + super(formatErrorMessage(errType, params), cause); // save type and params for custom message formatting this.errorType = errType; - this.errorParams = normalizeParams(params); + this.errorParams = params; // done log(); } /** * Constructor - * @param other + * @param errType + * @param params */ - public EmpireException(final EmpireException other) + public EmpireException(final ErrorType errType, final Object... params) { - super(other.getMessage(), other); + super(formatErrorMessage(errType, params)); // save type and params for custom message formatting - this.errorType = other.getErrorType(); - this.errorParams = other.getErrorParams(); + this.errorType = errType; + this.errorParams = normalizeParams(params); // done log(); } @@ -140,6 +142,20 @@ public final class EmpireException exten // done log(); } + + /** + * Constructor + * @param other + */ + public EmpireException(final EmpireException other) + { + super(other.getMessage(), other); + // save type and params for custom message formatting + this.errorType = other.getErrorType(); + this.errorParams = other.getErrorParams(); + // done + log(); + } private void log() { Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/commons/ErrorObject.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/commons/ErrorObject.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/commons/ErrorObject.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/commons/ErrorObject.java Tue Jul 19 16:53:34 2011 @@ -18,13 +18,13 @@ */ package org.apache.empire.commons; +import java.text.MessageFormat; +import java.util.WeakHashMap; + import org.apache.empire.EmpireException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.text.MessageFormat; -import java.util.WeakHashMap; - /** * This class holds and provides information about the last error that occured on an object. @@ -50,7 +50,7 @@ public abstract class ErrorObject implem * If disabled (default) the functions' return values will indicate success or failure
* @return true if Exceptions are enable or false otherwise */ - public static boolean isExceptionsEnabled() + private static boolean isExceptionsEnabled() { return exceptionsEnabled; } @@ -61,7 +61,7 @@ public abstract class ErrorObject implem * Instead the functions' return values will indicate success or failure
* @param enableExceptions true to enable exceptions or false to disable */ - public static void setExceptionsEnabled(boolean enableExceptions) + private static void setExceptionsEnabled(boolean enableExceptions) { ErrorObject.exceptionsEnabled = enableExceptions; } @@ -105,7 +105,7 @@ public abstract class ErrorObject implem * @param error the error information for which to obtain an error message * @return the error message or an empty string if no error has been set. */ - public static String getMessage(ErrorInfo error) + private static String getMessage(ErrorInfo error) { if (error==null) return ""; @@ -143,7 +143,7 @@ public abstract class ErrorObject implem /** * getErrorInfo */ - protected ObjectErrorInfo getErrorInfo(boolean create) + private ObjectErrorInfo getErrorInfo(boolean create) { WeakHashMap map = errorMap.get(); if (map==null) @@ -161,7 +161,7 @@ public abstract class ErrorObject implem /** * Clears the ErrorInfo. */ - protected void clearErrorInfo() + private void clearErrorInfo() { WeakHashMap map = errorMap.get(); if (map!=null) @@ -212,19 +212,19 @@ public abstract class ErrorObject implem return ((info!=null) ? info.errParams : null); } + public final String getErrorMessage() + { + return getMessage(this); + } + /** * Clears the error for this object. */ - public final void clearError() + private final void clearError() { internalSetError(Errors.None, null, null); } - public final String getErrorMessage() - { - return getMessage(this); - } - /** * Sets the last error and the corresponding error message on this object. * @@ -233,7 +233,7 @@ public abstract class ErrorObject implem * @param source object from which this error originated from. * @return always false except if the errType is of Type Errors.None */ - protected boolean internalSetError(final ErrorType errType, final Object[] params, final ErrorInfo source) + private boolean internalSetError(final ErrorType errType, final Object[] params, final ErrorInfo source) { // setError if (errType == Errors.None ) { // No Error @@ -253,9 +253,9 @@ public abstract class ErrorObject implem } /** returns true */ - protected final boolean success() + private final void success() { - return internalSetError(Errors.None, null, null); + // return internalSetError(Errors.None, null, null); } /** @@ -265,13 +265,13 @@ public abstract class ErrorObject implem * @param params array of parameters for the error message if any. * @return always false except if the errType is of Type Errors.None */ - protected final boolean error(final ErrorType errType, final Object... params) + private final void error(final ErrorType errType, final Object... params) { // check error code if (errType == Errors.None) { // Must supply a valid error code log.error("error function called with invalid error Code."); - return true; + return; } // Check parameter count int paramCount = (params!=null) ? params.length : 0; @@ -306,7 +306,7 @@ public abstract class ErrorObject implem log.error("Unable to log error message.", e); } // Set the Error - return internalSetError(errType, params, null); + internalSetError(errType, params, null); } /** @@ -314,9 +314,9 @@ public abstract class ErrorObject implem * * @return always false except if the errType is of Type Errors.None */ - protected final boolean error(final ErrorType errType) + private final void error(final ErrorType errType) { - return error(errType, (Object[])null); + error(errType, (Object[])null); } /** @@ -326,11 +326,11 @@ public abstract class ErrorObject implem * @param exptn Exception from witch the error message is copied. * @return always false except if the errType is of Type Errors.None */ - protected final boolean error(final ErrorType errType, final Throwable exptn) + private final void error(final ErrorType errType, final Throwable exptn) { if (exptn==null) { log.warn("Cannot set exception error with param of null!"); - return true; // No Error + return; // No Error } // Exception String type = exptn.getClass().getName(); @@ -342,7 +342,7 @@ public abstract class ErrorObject implem StackTraceElement[] stack = exptn.getStackTrace(); String pos = (stack!=null) ? stack[0].toString() : getClass().getName(); // Create Error - return error(errType, new Object[] { type, msg, pos }); + error(errType, new Object[] { type, msg, pos }); } /** @@ -351,9 +351,9 @@ public abstract class ErrorObject implem * @param exptn Exception from witch the error message is copied. * @return always false except if the errType is of Type Errors.None */ - protected final boolean error(final Throwable exptn) + private final void error(final Throwable exptn) { - return error(Errors.Exception, exptn); + error(Errors.Exception, exptn); } /** @@ -362,9 +362,8 @@ public abstract class ErrorObject implem * @param other the object from which to copy the error. * @return always false except if the errType is of Type Errors.None */ - protected final boolean error(final ErrorInfo other) + private final void error(final ErrorInfo other) { // copy other error - return internalSetError(other.getErrorType(), - other.getErrorParams(), other); + internalSetError(other.getErrorType(), other.getErrorParams(), other); } } \ No newline at end of file Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/Record.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/Record.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/Record.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/Record.java Tue Jul 19 16:53:34 2011 @@ -30,7 +30,7 @@ import org.apache.empire.commons.Options *

* This interface inherits from RecordData which provides further data access methods. *

- * The Record interface is implmented by the class {@link org.apache.empire.db.DBRecord} + * The Record interface is implemented by the class {@link org.apache.empire.db.DBRecord} *

*/ public interface Record extends RecordData @@ -94,17 +94,15 @@ public interface Record extends RecordDa * sets a record value based on the field index. * @param i index of the field for which to set the value * @param value the new field value - * @return true if value has been set or false if the value cannot be set for this field */ - boolean setValue(int i, Object value); + void setValue(int i, Object value); /** * sets a record value based on a column. * @param column the requested column * @param value the new record value for the given column - * @return true if value has been set or false if the value cannot be set for this column */ - boolean setValue(Column column, Object value); + void setValue(Column column, Object value); /** * checks whether or not the field for the given column has been modified since it has been loaded. @@ -125,9 +123,9 @@ public interface Record extends RecordDa *

* @param bean the Java Bean from which to read the value from * @param ignoreList list of column to ignore - * @return true if at least one field value has been successfully set + * @return the number of fields that have been set */ - boolean setBeanValues(Object bean, Collection ignoreList); + int setBeanValues(Object bean, Collection ignoreList); /** * sets all record values from a particular bean. @@ -135,8 +133,8 @@ public interface Record extends RecordDa * The bean must provide corresponding getter functions for all desired column. *

* @param bean the Java Bean from which to read the value from - * @return true if at least one field value has been successfully set + * @return the number of fields that have been set */ - boolean setBeanValues(Object bean); + int setBeanValues(Object bean); } Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/RecordData.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/RecordData.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/RecordData.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/RecordData.java Tue Jul 19 16:53:34 2011 @@ -23,7 +23,7 @@ import java.util.Collection; /** * The RecordData interface provides methods for accessing data and context specific metadata. *

- * The Record interface is implmented by the classes {@link org.apache.empire.db.DBReader} + * The Record interface is implemented by the classes {@link org.apache.empire.db.DBReader} * and {@link org.apache.empire.db.DBRecord}. *

*/ @@ -37,7 +37,7 @@ public interface RecordData /** * returns the index of the given column expression - * Indexed operations provide better performace for bulk processing + * Indexed operations provide better performance for bulk processing * @param column the column for which to return the index * @return the field index of the given column */ @@ -60,7 +60,7 @@ public interface RecordData /** * returns the value of the field at the given index position - * Indexed operations provide better performace for bulk processing compared to getValue(ColumnExpr) + * Indexed operations provide better performance for bulk processing compared to getValue(ColumnExpr) * @param index the field index for which to return the value * @return the record value for the given field */ @@ -75,7 +75,7 @@ public interface RecordData /** * checks if the field at the given index position contains no value (null) - * Indexed operations provide better performace for bulk processing compared to isNull(ColumnExpr) + * Indexed operations provide better performance for bulk processing compared to isNull(ColumnExpr) * @param index the field index * @return true if the field value is null or false otherwise */ @@ -91,24 +91,22 @@ public interface RecordData // ------- Java Bean Support ------- /** - * writes all field values into a static Java Bean. + * copies all field values into a static Java Bean. *

* In order to map column names to property names * the property name is detected by ColumnExpr.getBeanPropertyName() * @param bean the Java Bean for which to set the properties * @param ignoreList list of columns to skip (optional) - * @return true if at least one property has been successfully set */ - boolean getBeanProperties(Object bean, Collection ignoreList); + int getBeanProperties(Object bean, Collection ignoreList); /** - * writes all field values into a static Java Bean. + * copies all field values into a static Java Bean. *

* In order to map column names to property names * the property name is detected by ColumnExpr.getBeanPropertyName() * @param bean the Java Bean for which to set the properties - * @return true if at least one property has been successfully set */ - boolean getBeanProperties(Object bean); + int getBeanProperties(Object bean); } Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/data/bean/BeanRecordProxy.java Tue Jul 19 16:53:34 2011 @@ -25,8 +25,7 @@ import java.util.List; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtilsBean; import org.apache.commons.beanutils.PropertyUtilsBean; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.empire.EmpireException; import org.apache.empire.commons.ErrorObject; import org.apache.empire.commons.Errors; import org.apache.empire.commons.ObjectUtils; @@ -34,6 +33,8 @@ import org.apache.empire.commons.Options import org.apache.empire.data.Column; import org.apache.empire.data.ColumnExpr; import org.apache.empire.data.Record; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -173,9 +174,8 @@ public class BeanRecordProxy extends public boolean isNew() { if (!isValid()) - return error(Errors.InvalidProperty, "bean"); + throw new EmpireException(Errors.InvalidProperty, "bean"); // Record is new until all key fields have been supplied - clearError(); if (keyColumns!=null) { // Check all Key Columns for (int i=0; i extends public Object getValue(ColumnExpr column) { if (!isValid()) - { error(Errors.InvalidProperty, "bean"); - return null; - } + throw new EmpireException(Errors.InvalidProperty, "bean"); + // getBeanPropertyValue return getBeanPropertyValue(data, column); } @@ -223,10 +222,10 @@ public class BeanRecordProxy extends /** * sets the value of a field. */ - public boolean setValue(Column column, Object value) + public void setValue(Column column, Object value) { if (!isValid()) - return error(Errors.InvalidProperty, "bean"); + throw new EmpireException(Errors.InvalidProperty, "bean"); // Track modification status if (ObjectUtils.compareEqual(getValue(column), value)==false) { @@ -235,15 +234,15 @@ public class BeanRecordProxy extends modified[getFieldIndex(column)] = true; } // Set Value - return setBeanPropertyValue(data, column, value); + setBeanPropertyValue(data, column, value); } /** * sets the value of a field. */ - public boolean setValue(int i, Object value) + public void setValue(int i, Object value) { - return setValue(getColumn(i), value); + setValue(getColumn(i), value); } /** @@ -253,8 +252,8 @@ public class BeanRecordProxy extends { int index = getFieldIndex(column); if (index<0) - return error(Errors.ItemNotFound, column.getName()); - clearError(); + throw new EmpireException(Errors.ItemNotFound, column.getName()); + // check modified return (modified!=null && modified[index]); } @@ -268,12 +267,12 @@ public class BeanRecordProxy extends // --------------- Bean support ------------------ - public boolean getBeanProperties(Object bean) + public int getBeanProperties(Object bean) { return getBeanProperties(bean, null); } - public boolean getBeanProperties(Object bean, Collection ignoreList) + public int getBeanProperties(Object bean, Collection ignoreList) { // Add all Columns int count = 0; @@ -287,10 +286,10 @@ public class BeanRecordProxy extends // Get Property Name setBeanPropertyValue(bean, column, getValue(i)); } - return (count > 0); + return count; } - public boolean setBeanValues(Object bean, Collection ignoreList) + public int setBeanValues(Object bean, Collection ignoreList) { // Add all Columns int count = 0; @@ -306,13 +305,13 @@ public class BeanRecordProxy extends Object value = getBeanPropertyValue(bean, property); if (value==null && this.hasError()) continue; - if (setValue(column, value)) - count++; + setValue(column, value); + count++; } - return (count > 0); + return count; } - public boolean setBeanValues(Object bean) + public int setBeanValues(Object bean) { return setBeanValues(bean, null); } @@ -323,9 +322,8 @@ public class BeanRecordProxy extends { // Check Params if (column==null) - { error(Errors.InvalidArg, "column"); - return null; - } + throw new EmpireException(Errors.InvalidArg, "column"); + // getBeanPropertyValue return getBeanPropertyValue(bean, column.getBeanPropertyName()); } @@ -333,55 +331,47 @@ public class BeanRecordProxy extends { // Check Params if (bean==null || property==null) - { error(Errors.InvalidArg, "property"); - return null; - } + throw new EmpireException(Errors.InvalidArg, "property"); try { // Get Property Value - clearError(); PropertyUtilsBean pub = BeanUtilsBean.getInstance().getPropertyUtils(); return pub.getSimpleProperty(bean, property); } catch (IllegalAccessException e) { log.error(bean.getClass().getName() + ": unable to get property '" + property + "'"); - error(e); - return null; + throw new EmpireException(e); } catch (InvocationTargetException e) { log.error(bean.getClass().getName() + ": unable to get property '" + property + "'"); - error(e); - return null; + throw new EmpireException(e); } catch (NoSuchMethodException e) { log.warn(bean.getClass().getName() + ": no getter available for property '" + property + "'"); - error(e); - return null; + throw new EmpireException(e); } } - protected boolean setBeanPropertyValue(Object bean, Column column, Object value) + protected void setBeanPropertyValue(Object bean, Column column, Object value) { // Check Params if (bean==null || column==null) - return error(Errors.InvalidArg, "column"); + throw new EmpireException(Errors.InvalidArg, "column"); // Get Property Name String property = column.getBeanPropertyName(); try { // Get Property Value - clearError(); if (ObjectUtils.isEmpty(value)) value = null; BeanUtils.setProperty(bean, property, value); // PropertyUtilsBean pub = BeanUtilsBean.getInstance().getPropertyUtils(); // pub.setSimpleProperty(data, property, value); - return success(); } catch (IllegalArgumentException e) { log.error(bean.getClass().getName() + ": invalid argument for property '" + property + "'"); - return error(e); + throw new EmpireException(e); } catch (IllegalAccessException e) { log.error(bean.getClass().getName() + ": unable to set property '" + property + "'"); - return error(e); + throw new EmpireException(e); } catch (InvocationTargetException e) { log.error(bean.getClass().getName() + ": unable to set property '" + property + "'"); - return error(e); + throw new EmpireException(e); } } Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBColumn.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBColumn.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBColumn.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBColumn.java Tue Jul 19 16:53:34 2011 @@ -114,7 +114,7 @@ public abstract class DBColumn extends D */ public abstract boolean isReadOnly(); - public abstract boolean checkValue(Object value); + public abstract void checkValue(Object value); @Override public abstract Element addXml(Element parent, long flags); Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCombinedCmd.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCombinedCmd.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCombinedCmd.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCombinedCmd.java Tue Jul 19 16:53:34 2011 @@ -125,20 +125,18 @@ public class DBCombinedCmd extends DBCom * @return true if the creation was successful */ @Override - public boolean getSelect(StringBuilder buf) + public void getSelect(StringBuilder buf) { // the left part left.clearOrderBy(); - if (!left.getSelect(buf)) - return error(left); + left.getSelect(buf); // concat keyword buf.append( " " ); buf.append( keyWord ); buf.append( " (" ); // the right part right.clearOrderBy(); - if (!right.getSelect(buf)) - return error(right); + right.getSelect(buf); // done buf.append( ")" ); // Add optional Order by statement @@ -147,7 +145,6 @@ public class DBCombinedCmd extends DBCom buf.append("\r\nORDER BY "); addListExpr(buf, orderBy, CTX_DEFAULT, ", "); } - return success(); } @Override Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommand.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommand.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommand.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommand.java Tue Jul 19 16:53:34 2011 @@ -672,9 +672,9 @@ public abstract class DBCommand extends * * @return true if the database supports a limit or false otherwise */ - public boolean limitRows(int numRows) + public void limitRows(int numRows) { - return error(Errors.NotSupported, "limitRows"); + throw new EmpireException(Errors.NotSupported, "limitRows"); } /** @@ -683,9 +683,9 @@ public abstract class DBCommand extends * * @return true if the database supports an offset or false otherwise */ - public boolean skipRows(int numRows) + public void skipRows(int numRows) { - return error(Errors.NotSupported, "skipRows"); + throw new EmpireException(Errors.NotSupported, "skipRows"); } /** @@ -702,11 +702,11 @@ public abstract class DBCommand extends } @Override - public synchronized boolean getSelect(StringBuilder buf) + public synchronized void getSelect(StringBuilder buf) { resetParamUsage(); if (select == null) - return error(Errors.ObjectNotValid, getClass().getName()); // invalid! + throw new EmpireException(Errors.ObjectNotValid, getClass().getName()); // invalid! // Prepares statement addSelect(buf); // From clause @@ -717,8 +717,6 @@ public abstract class DBCommand extends addGrouping(buf); // Add Order addOrder(buf); - // done - return success(); } /** Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java Tue Jul 19 16:53:34 2011 @@ -19,6 +19,7 @@ package org.apache.empire.db; // java +import org.apache.empire.EmpireException; import org.apache.empire.commons.Errors; import org.apache.empire.commons.Options; import org.apache.empire.data.DataType; @@ -107,8 +108,7 @@ public abstract class DBCommandExpr exte @Override public DBColumn[] getKeyColumns() { - error(Errors.NotSupported, "getKeyColumns"); - return null; + throw new EmpireException(Errors.NotSupported, "getKeyColumns"); } /** @@ -119,48 +119,47 @@ public abstract class DBCommandExpr exte @Override public Object[] getRecordKey(DBRecord rec) { - error(Errors.NotSupported, "getRecordKey"); - return null; + throw new EmpireException(Errors.NotSupported, "getRecordKey"); } /** Returns the error message: ERR_NOTSUPPORTED */ @Override - public boolean initRecord(DBRecord rec, Object[] keyValues) + public void initRecord(DBRecord rec, Object[] keyValues) { - return error(Errors.NotSupported, "initRecord"); + throw new EmpireException(Errors.NotSupported, "initRecord"); } /** Returns the error message: ERR_NOTSUPPORTED */ @Override - public boolean createRecord(DBRecord rec, Connection conn) + public void createRecord(DBRecord rec, Connection conn) { - return error(Errors.NotSupported, "addRecord"); + throw new EmpireException(Errors.NotSupported, "addRecord"); } /** Returns the error message: ERR_NOTSUPPORTED */ @Override - public boolean readRecord(DBRecord rec, Object[] keys, Connection conn) + public void readRecord(DBRecord rec, Object[] keys, Connection conn) { - return error(Errors.NotSupported, "getRecord"); + throw new EmpireException(Errors.NotSupported, "getRecord"); } /** Returns the error message: ERR_NOTSUPPORTED */ @Override - public boolean updateRecord(DBRecord rec, Connection conn) + public void updateRecord(DBRecord rec, Connection conn) { - return error(Errors.NotSupported, "updateRecord"); + throw new EmpireException(Errors.NotSupported, "updateRecord"); } /** Returns the error message: ERR_NOTSUPPORTED */ @Override - public boolean deleteRecord(Object[] keys, Connection conn) + public void deleteRecord(Object[] keys, Connection conn) { - return error(Errors.NotSupported, "deleteRecord"); + throw new EmpireException(Errors.NotSupported, "deleteRecord"); } } /** - * This class wrapps a column of sql command in a special command column object. + * This class wraps a column of sql command in a special command column object. */ protected static class DBCmdColumn extends DBColumn { @@ -275,9 +274,9 @@ public abstract class DBCommandExpr exte * Not applicable - always returns true. */ @Override - public boolean checkValue(Object value) + public void checkValue(Object value) { - return true; + // Nothing to check. } /** @@ -304,7 +303,7 @@ public abstract class DBCommandExpr exte // get Select SQL public abstract boolean isValid(); - public abstract boolean getSelect(StringBuilder buf); + public abstract void getSelect(StringBuilder buf); public abstract DBColumnExpr[] getSelectExprList(); @@ -340,15 +339,11 @@ public abstract class DBCommandExpr exte * returns an SQL select command for querying records. * @return the SQL-Command */ - public String getSelect() + public final String getSelect() { - StringBuilder buf = new StringBuilder(); - if (getSelect(buf) == false) - { - log.error(getErrorMessage()); - return null; - } - return buf.toString(); + StringBuilder sql = new StringBuilder(); + getSelect(sql); + return sql.toString(); } /** @@ -467,10 +462,8 @@ public abstract class DBCommandExpr exte protected String getInsertInto(DBTable table, DBColumnExpr[] select, List columns) { if (select == null) - { // invalid Object - error(Errors.ObjectNotValid, getClass().getName()); - return null; - } + throw new EmpireException(Errors.ObjectNotValid, getClass().getName()); + // prepare buffer StringBuilder buf = new StringBuilder("INSERT INTO "); table.addSQL(buf, CTX_FULLNAME); // destination columns @@ -478,8 +471,7 @@ public abstract class DBCommandExpr exte { // Check Count if (columns.size() != select.length) { - error(Errors.InvalidArg, columns, "columns"); - return null; + throw new EmpireException(Errors.InvalidArg, columns, "columns"); } // Append Names buf.append(" ("); @@ -519,10 +511,7 @@ public abstract class DBCommandExpr exte { DBColumnExpr[] select = getSelectExprList(); if (select == null || select.length < 1) - { - error(Errors.ObjectNotValid, getClass().getName()); - return null; - } + throw new EmpireException(Errors.ObjectNotValid, getClass().getName()); // Match Columns List inscols = new ArrayList(select.length); for (int i = 0; i < select.length; i++) Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java Tue Jul 19 16:53:34 2011 @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import org.apache.empire.EmpireException; import org.apache.empire.commons.Errors; import org.apache.empire.commons.ObjectUtils; import org.apache.empire.commons.Options; @@ -162,22 +163,20 @@ public abstract class DBDatabase extends * Sets the database driver for this database. This will * set up the connection for use.
* - * @param driver the databae driver + * @param driver the database driver * @param conn the connection * - * @return true on succes + * @return true on success */ - public boolean open(DBDatabaseDriver driver, Connection conn) + public void open(DBDatabaseDriver driver, Connection conn) { // Close Database if already open if (isOpen()) close(conn); // Attach to driver - if (driver.attachDatabase(this, conn)==false) - return error(driver); + driver.attachDatabase(this, conn); // set new driver this.driver = driver; - return success(); } /** @@ -207,24 +206,20 @@ public abstract class DBDatabase extends * * @return the DLL script for creating the entire database schema */ - public synchronized boolean getCreateDDLScript(DBDatabaseDriver driver, DBSQLScript script) + public synchronized void getCreateDDLScript(DBDatabaseDriver driver, DBSQLScript script) { DBDatabaseDriver prevDriver = this.driver; try { // Set driver if (this.driver!=null && this.driver!=driver && driver!=null) { // The database belongs to a different driver - return error(Errors.Internal, "The database is attached to a different driver."); + throw new EmpireException(Errors.Internal, "The database is attached to a different driver."); } // Temporarily change driver if (this.driver== null) this.driver = driver; // Get DDL Command - if (driver.getDDLScript(DBCmdType.CREATE, this, script)==false) - { // DDL-creation failed - return error(driver); - } - return success(); + driver.getDDLScript(DBCmdType.CREATE, this, script); } finally { this.driver = prevDriver; @@ -255,15 +250,14 @@ public abstract class DBDatabase extends * * @param schema the schema to set * - * @return true on succes + * @return true on success */ - public boolean setSchema(String schema) + public void setSchema(String schema) { // Database must not be open so far if (driver != null) - return error(Errors.NoAccess); + throw new EmpireException(Errors.NoAccess); // Set Schema this.schema = schema; - return success(); } /** @@ -296,15 +290,14 @@ public abstract class DBDatabase extends * * @param linkName the database link name * - * @return true on succes + * @return true on success */ - public boolean setLinkName(String linkName) + public void setLinkName(String linkName) { // Database must not be open so far if (driver != null) - return error(Errors.NoAccess); + throw new EmpireException(Errors.NoAccess); // Set Link this.linkName = linkName; - return success(); } /** @@ -327,7 +320,7 @@ public abstract class DBDatabase extends /** * Adds a full qualified object name including schema prefix * and database link postfix (if any). - * to the string buffer suppield + * to the string buffer supplied * * @param buf the string buffer to which to append the qualified object name * @param name the object's name @@ -338,7 +331,7 @@ public abstract class DBDatabase extends // Check driver if (driver==null) { // No driver attached! - error(Errors.ObjectNotValid, name); + log.warn("No driver attached for appending qualified name {0}.", name); buf.append(name); return; } @@ -433,24 +426,23 @@ public abstract class DBDatabase extends * @param table the DBTable object * @return true if successful */ - public boolean addTable(DBTable table) + public void addTable(DBTable table) { // find column by name if (table == null || table.getDatabase() != this) - return error(Errors.InvalidArg, table, "table"); + throw new EmpireException(Errors.InvalidArg, table, "table"); if (tables.contains(table)==true) - return error(Errors.ItemExists, table.getName()); + throw new EmpireException(Errors.ItemExists, table.getName()); // Check for second instances DBTable existing = getTable(table.getName()); if (existing!=null) { // Check classes if (existing.getClass().equals(table.getClass())) - return success(); // Ingore other instances + return; // Ignore other instances // Table exists with different class - return error(Errors.ItemExists, table.getName()); + throw new EmpireException(Errors.ItemExists, table.getName()); } // add now tables.add(table); - return true; } /** @@ -486,14 +478,14 @@ public abstract class DBDatabase extends * @param reference a reference for a source and target column pair * @return true if the relations were successfully created. */ - public final boolean addRelation(DBRelation.DBReference reference) + public final void addRelation(DBRelation.DBReference reference) { String table = reference.getSourceColumn().getRowSet().getName(); String col1 = reference.getSourceColumn().getName(); // Create Relation Name String name = table.substring(0, Math.min(table.length(), 14)) + "_" + col1.substring(0, Math.min(col1.length(), 12)) + "_FK"; - return addRelation(name, new DBRelation.DBReference[] { reference }); + addRelation(name, new DBRelation.DBReference[] { reference }); } /** @@ -503,7 +495,7 @@ public abstract class DBDatabase extends * @param ref2 a reference for a source and target column pair * @return true if the relations were successfully created. */ - public final boolean addRelation(DBRelation.DBReference ref1, DBRelation.DBReference ref2) + public final void addRelation(DBRelation.DBReference ref1, DBRelation.DBReference ref2) { String table = ref1.getSourceColumn().getRowSet().getName(); String col1 = ref1.getSourceColumn().getName(); @@ -512,7 +504,7 @@ public abstract class DBDatabase extends String name = table.substring(0, Math.min(table.length(), 9)) + "_" + col1.substring(0, Math.min(col1.length(), 9)) + "_" + col2.substring(0, Math.min(col2.length(), 9)) + "_FK"; - return addRelation(name, new DBRelation.DBReference[] { ref1, ref2 }); + addRelation(name, new DBRelation.DBReference[] { ref1, ref2 }); } /** @@ -523,12 +515,12 @@ public abstract class DBDatabase extends * * @return true if the relations were successfully created. */ - public boolean addRelation(String name, DBRelation.DBReference[] references) + public void addRelation(String name, DBRelation.DBReference[] references) { // Add a Relation DBRelation relation = new DBRelation(this, name, references); if (relations.contains(relation)) - return error(Errors.ItemExists, name); // Itemn already exists + throw new EmpireException(Errors.ItemExists, name); // Itemn already exists // Add Reference column to table for (DBRelation.DBReference ref : references) { // add the reference column @@ -537,7 +529,6 @@ public abstract class DBDatabase extends } // OK relations.add(relation); - return true; } /** @@ -558,15 +549,14 @@ public abstract class DBDatabase extends * @param view the DBView object * @return true if successful */ - public boolean addView(DBView view) + public void addView(DBView view) { // find column by name if (view == null || view.getDatabase() != this) - return error(Errors.InvalidArg, view, "view"); + throw new EmpireException(Errors.InvalidArg, view, "view"); if (views.contains(view) == true) - return error(Errors.ItemExists, view.getName()); + throw new EmpireException(Errors.ItemExists, view.getName()); // add now views.add(view); - return true; } /** @@ -609,11 +599,10 @@ public abstract class DBDatabase extends /** * @return true if the database has been opened or false otherwise */ - protected boolean checkOpen() + protected void checkOpen() { - if (driver == null) - return error(DBErrors.DatabaseNotOpen); - return success(); + if (isOpen()==false) + throw new EmpireException(DBErrors.DatabaseNotOpen); } /** @@ -623,8 +612,7 @@ public abstract class DBDatabase extends */ public DBCommand createCommand() { - if (!checkOpen()) - return null; + checkOpen(); return driver.createCommand(this); } @@ -636,20 +624,16 @@ public abstract class DBDatabase extends */ public java.sql.Timestamp getUpdateTimestamp(Connection conn) { - // Default implementation - if (checkOpen()==false) - return null; // Ask driver + checkOpen(); return driver.getUpdateTimestamp(conn); } // Sequences public Object getNextSequenceValue(String seqName, Connection conn) { - // Default implementation - if (checkOpen()==false) - return null; // Ask driver + checkOpen(); return driver.getNextSequenceValue(this, seqName, 1, conn); } @@ -665,42 +649,34 @@ public abstract class DBDatabase extends public Object querySingleValue(String sqlCmd, Connection conn) { + checkOpen(); ResultSet rs = null; try - { // Check Open - if (checkOpen()==false) - return null; - // Debug + { // Debug long start = System.currentTimeMillis(); if (log.isDebugEnabled()) log.debug("executing: " + sqlCmd); // Get the next Value rs = driver.executeQuery(sqlCmd, null, false, conn); if (rs == null) - { // Error - error(driver); - return null; - } + throw new EmpireException(Errors.Internal, "Unexpected return value."); // Check Result if (rs.next() == false) - { - //log.warn("querySingleValue returned no result : Stack", new Exception("Just to show the stack")); + { // no result log.debug("querySingleValue returned no result"); - error(DBErrors.QueryNoResult, sqlCmd); - return null; + throw new EmpireException(DBErrors.QueryNoResult, sqlCmd); } // No Value - clearError(); Object result = rs.getObject(1); if (log.isDebugEnabled()) log.debug("querySingleValue complete in " + (System.currentTimeMillis() - start) + " ms -> value=" + result); return result; - } catch (SQLException e) - { - log.error("querySingleValue exception: " + e.toString()); - error(DBErrors.QueryFailed, e); - return null; + } catch (SQLException sqle) + { // Error + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing query {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; } finally { // Cleanup closeResultSet(rs); @@ -825,10 +801,8 @@ public abstract class DBDatabase extends * @return the number of elements that have been added to the collection or -1 if an error occurred */ public int querySimpleList(Class c, String sqlCmd, Connection conn, Collection result) - { // Check status - if (checkOpen()==false) - return -1; - // Start query + { // Start query + checkOpen(); ResultSet rs = null; try { // Log performance @@ -838,10 +812,7 @@ public abstract class DBDatabase extends // Get the next Value rs = driver.executeQuery(sqlCmd, null, false, conn); if (rs == null) - { // Error - error(driver); - return -1; - } + throw new EmpireException(Errors.Internal, "Unexpected return value."); // Check Result int count=0; while (rs.next()) @@ -853,18 +824,15 @@ public abstract class DBDatabase extends // No Value if (log.isInfoEnabled()) log.info("querySimpleList retured " + count + " items. Query completed in " + (System.currentTimeMillis() - start) + " ms"); - clearError(); return count; } catch (ClassCastException e) - { - log.error("querySingleValue cast exception: ", e); - error(Errors.Exception, e); - return -1; - } catch (SQLException e) - { - log.error("querySimpleList exception: ", e); - error(DBErrors.QueryFailed, e); - return -1; + { log.error("querySingleValue cast exception: ", e); + throw new EmpireException(e); + } catch (SQLException sqle) + { // Error + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing query {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; } finally { // Cleanup closeResultSet(rs); @@ -913,30 +881,19 @@ public abstract class DBDatabase extends */ public Options queryOptionList(String sqlCmd, Connection conn) { // Execute the Statement - if (checkOpen()==false) - return null; - // Debug + checkOpen(); ResultSet rs = null; try - { // Check Open - if (checkOpen()==false) - return null; - // Debug + { // Debug long start = System.currentTimeMillis(); if (log.isInfoEnabled()) log.info("executing: " + sqlCmd); // Get the next Value rs = driver.executeQuery(sqlCmd, null, false, conn); if (rs == null) - { // Error - error(driver); - return null; - } + throw new EmpireException(Errors.Internal, "Unexpected return value."); if (rs.getMetaData().getColumnCount()<2) - { // Not enough columns - error(Errors.InvalidArg, sqlCmd, "sqlCmd"); - return null; - } + throw new EmpireException(Errors.InvalidArg, sqlCmd, "sqlCmd"); // Check Result Options result = new Options(); while (rs.next()) @@ -948,12 +905,12 @@ public abstract class DBDatabase extends // No Value if (log.isInfoEnabled()) log.info("queryOptionList retured " + result.size() + " items. Query completed in " + (System.currentTimeMillis() - start) + " ms"); - clearError(); return result; - } catch (SQLException e) - { - error(DBErrors.QueryFailed, e); - return null; + } catch (SQLException sqle) + { // Error + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing query {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; } finally { // Cleanup closeResultSet(rs); @@ -971,10 +928,8 @@ public abstract class DBDatabase extends * @return a list of object arrays */ public int queryObjectList(String sqlCmd, Connection conn, Collection result) - { // Check status - if (checkOpen()==false) - return -1; - // Perform query + { // Perform query + checkOpen(); ResultSet rs = null; try { // Log performance @@ -984,10 +939,7 @@ public abstract class DBDatabase extends // Get the next Value rs = driver.executeQuery(sqlCmd, null, false, conn); if (rs == null) - { // Error - error(driver); - return -1; - } + throw new EmpireException(Errors.Internal, "Unexpected return value."); // Read List int colCount = rs.getMetaData().getColumnCount(); int count = 0; @@ -1004,12 +956,12 @@ public abstract class DBDatabase extends // No Value if (log.isInfoEnabled()) log.info("queryObjectList retured " + count + " items. Query completed in " + (System.currentTimeMillis() - start) + " ms"); - clearError(); return count; - } catch (SQLException e) - { - error(DBErrors.QueryFailed, e); - return -1; + } catch (SQLException sqle) + { // Error + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing query {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; } finally { // Cleanup closeResultSet(rs); @@ -1044,33 +996,28 @@ public abstract class DBDatabase extends */ public int executeSQL(String sqlCmd, Object[] sqlParams, Connection conn, DBDatabaseDriver.DBSetGenKeys setGenKeys) { + checkOpen(); try - { - // check driver - if (checkOpen()==false) - return -1; - // Debug + { // Debug if (log.isInfoEnabled()) log.info("Executing: " + sqlCmd); // execute SQL long start = System.currentTimeMillis(); int affected = driver.executeSQL(sqlCmd, sqlParams, conn, setGenKeys); + // number of affected records + if (affected < 0) + throw new EmpireException(Errors.Internal, "Unexpected return value <0 for driver.executeSQL()."); // Log if (log.isInfoEnabled()) log.info("executeSQL affected " + affected + " Records / " + (System.currentTimeMillis() - start) + "ms"); - // number of affected records - if (affected < 0) - { - error(driver); - return -1; - } // Return number of affected records return affected; } catch (SQLException sqle) { // Error - error(sqle); - return -1; + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing statement {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; } } @@ -1105,33 +1052,28 @@ public abstract class DBDatabase extends */ public ResultSet executeQuery(String sqlCmd, Object[] sqlParams, boolean scrollable, Connection conn) { + checkOpen(); try - { // check driver - if (checkOpen()==false) - return null; - // Debug + { // Debug if (log.isDebugEnabled()) log.debug("Executing: " + sqlCmd); // Execute the Statement long start = System.currentTimeMillis(); ResultSet rs = driver.executeQuery(sqlCmd, sqlParams, scrollable, conn); if (rs == null) - { error(driver); - return null; - } + throw new EmpireException(Errors.Internal, "Unexpected return value."); // Debug if (log.isDebugEnabled()) log.debug("executeQuery successful in " + (System.currentTimeMillis() - start) + " ms"); // Return number of affected records - success(); return rs; - } catch (SQLException e) - { // SQL Query failed! - log.error("execute query exception! sql = " + sqlCmd); - error(DBErrors.QueryFailed, e); - return null; - } + } catch (SQLException sqle) + { // Error + EmpireException exptn = SQL2EmpireException(DBErrors.QueryFailed, sqle); + log.error("Error executing query {0}. Message is {0}", sqlCmd, exptn.getMessage()); + throw exptn; + } } /** @@ -1143,20 +1085,20 @@ public abstract class DBDatabase extends * * @return true if successful */ - public boolean commit(Connection conn) + public void commit(Connection conn) { try { // Check argument if (conn==null) - return error(Errors.InvalidArg, null, "conn"); + throw new EmpireException(Errors.InvalidArg, null, "conn"); // Commit if (conn.getAutoCommit()==false) conn.commit(); - return true; - } catch (SQLException sqle) - { + // Done + return; + } catch (SQLException sqle) { // Commit failed! - return error(sqle); + throw new EmpireException(sqle); } } @@ -1169,19 +1111,20 @@ public abstract class DBDatabase extends * * @return true if successful */ - public boolean rollback(Connection conn) + public void rollback(Connection conn) { try - { // Check arguement + { // Check argument if (conn==null) - return error(Errors.InvalidArg, null, "conn"); - // Rollback + throw new EmpireException(Errors.InvalidArg, null, "conn"); + // rollback log.info("Database rollback issued!"); conn.rollback(); - return success(); - } catch (SQLException sqle) - { - return error(sqle); + // Done + return; + } catch (SQLException sqle) { + // Commit failed! + throw new EmpireException(sqle); } } @@ -1198,10 +1141,10 @@ public abstract class DBDatabase extends if (stmt != null) stmt.close(); // done - success(); - } catch (SQLException sqle) - { - error(sqle); + return; + } catch (SQLException sqle) { + // Commit failed! + throw new EmpireException(sqle); } } @@ -1217,7 +1160,7 @@ public abstract class DBDatabase extends { // check ResultSet if (rset == null) return; // nothing to do - // close Resutlset + // close Resultset Statement stmt = rset.getStatement(); rset.close(); // check Statement @@ -1225,11 +1168,11 @@ public abstract class DBDatabase extends return; // close Statement stmt.close(); - success(); - - } catch (SQLException sqle) - { - error(sqle); + // done + return; + } catch (SQLException sqle) { + // Commit failed! + throw new EmpireException(sqle); } } Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java Tue Jul 19 16:53:34 2011 @@ -33,6 +33,7 @@ import java.util.HashSet; import java.util.Set; import java.util.UUID; +import org.apache.empire.EmpireException; import org.apache.empire.commons.DateUtils; import org.apache.empire.commons.ErrorObject; import org.apache.empire.commons.Errors; @@ -223,11 +224,9 @@ public abstract class DBDatabaseDriver e if (log.isInfoEnabled()) log.info("Sequence {} incremented to {}.", SeqName, seqValue); return new Long(seqValue); - } catch (Exception e) - { - log.error("getNextValue exception: " + e.toString()); - error(e); - return null; + } catch (SQLException e) { + // throw exception + throw SQL2EmpireException(e); } finally { // Cleanup db.closeStatement(stmt); @@ -380,8 +379,7 @@ public abstract class DBDatabaseDriver e return (type==DataType.DATE ? DateUtils.getDateOnly(ts) : ts); } // Other types - error(Errors.NotSupported, "getColumnAutoValue() for "+type); - return null; + throw new EmpireException(Errors.NotSupported, "getColumnAutoValue() for "+type); } /** @@ -569,8 +567,7 @@ public abstract class DBDatabaseDriver e stmt = conn.createStatement(type, ResultSet.CONCUR_READ_ONLY); return stmt.executeQuery(sqlCmd); } - } catch(SQLException e) - { + } catch(SQLException e) { // close statement (if not null) close(stmt); throw e; @@ -679,9 +676,9 @@ public abstract class DBDatabaseDriver e /** * Called when a database is opened */ - protected boolean attachDatabase(DBDatabase db, Connection conn) + protected void attachDatabase(DBDatabase db, Connection conn) { - return success(); + // Override to implement attaching behaviour } /** @@ -701,9 +698,9 @@ public abstract class DBDatabaseDriver e * * @return true if it is consistent with the description */ - public boolean checkDatabase(DBDatabase db, String owner, Connection conn) + public void checkDatabase(DBDatabase db, String owner, Connection conn) { - return error(Errors.NotImplemented, "checkDatabase"); + throw new EmpireException(Errors.NotImplemented, "checkDatabase"); } /** @@ -715,9 +712,9 @@ public abstract class DBDatabaseDriver e * * @return true on succes */ - public boolean getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script) + public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script) { - return error(Errors.NotSupported, "getDDLScript"); + throw new EmpireException(Errors.NotSupported, "getDDLScript"); } /** Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBErrors.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBErrors.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBErrors.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBErrors.java Tue Jul 19 16:53:34 2011 @@ -24,49 +24,31 @@ import org.apache.empire.commons.ErrorTy * This class contains the definition of database specific errors. *

* For more informations see {@link org.apache.empire.commons.Errors} - * + * */ public class DBErrors { // Database - public static final ErrorType DatabaseNotOpen = new ErrorType("error.db.databasenotopen", - "the database has not been opened."); - public static final ErrorType ConnecitonInvalid = new ErrorType("error.db.connectioninvalid", - "the database connection is not valid"); - public static final ErrorType SQLException = new ErrorType("error.db.sqlexception", - "The database operation failed. Native error is {0}."); - public static final ErrorType ObjectNotFound = new ErrorType("error.db.objectnotfound", - "an object of type {0} named {1} does not exists or is inaccessible."); - public static final ErrorType ObjectCreationFailed = new ErrorType("error.db.objectcreationfailed", - "error creating the {0} of name {1}."); - public static final ErrorType NoPrimaryKey = new ErrorType("error.db.noprimarykey", - "No primary key is defined for {0}"); + public static final ErrorType DatabaseNotOpen = new ErrorType("error.db.databasenotopen", "the database has not been opened."); + public static final ErrorType ConnecitonInvalid = new ErrorType("error.db.connectioninvalid", "the database connection is not valid"); + public static final ErrorType SQLException = new ErrorType("error.db.sqlexception", "The database operation failed. Native error is {0}."); + public static final ErrorType ObjectNotFound = new ErrorType("error.db.objectnotfound", "an object of type {0} named {1} does not exists or is inaccessible."); + public static final ErrorType ObjectCreationFailed = new ErrorType("error.db.objectcreationfailed", "error creating the {0} of name {1}."); + public static final ErrorType NoPrimaryKey = new ErrorType("error.db.noprimarykey", "No primary key is defined for {0}"); // Query errors - public static final ErrorType QueryFailed = new ErrorType("error.db.queryfailed", - "The query failed. Native error is {0}."); - public static final ErrorType QueryNoResult = new ErrorType("error.db.querynoresult", - "No records found for query {0}"); + public static final ErrorType QueryFailed = new ErrorType("error.db.queryfailed", "The query failed. Native error is {0}."); + public static final ErrorType QueryNoResult = new ErrorType("error.db.querynoresult", "No records found for query {0}"); // Record errors - public static final ErrorType RecordInvalidKey = new ErrorType("error.db.recordinvalidkey", "Invalid record key {0}"); - public static final ErrorType RecordNotFound = new ErrorType("error.db.recordnotfound", - "The record {0} does not exist. It might have been deleted by another user."); - public static final ErrorType RecordUpdateFailed = new ErrorType("error.db.recordupatefailed", - "Updating the record {0} failed. It might have been changed or deleted by another user."); - public static final ErrorType RecordUpdateInvalid = new ErrorType("error.db.recordupateinvalid", - "Updating the record {0} failed. The given record key is ambiguous."); - public static final ErrorType RecordDeleteFailed = new ErrorType("error.db.recorddeletefailed", - "Deleting the record {0} failed. The record might have been deleted already by another user."); + public static final ErrorType RecordInvalidKey = new ErrorType("error.db.recordinvalidkey", "Invalid record key {0}"); + public static final ErrorType RecordNotFound = new ErrorType("error.db.recordnotfound", "The record {0} does not exist. It might have been deleted by another user."); + public static final ErrorType RecordUpdateFailed = new ErrorType("error.db.recordupatefailed", "Updating the record {0} failed. It might have been changed or deleted by another user."); + public static final ErrorType RecordUpdateInvalid = new ErrorType("error.db.recordupateinvalid", "Updating the record {0} failed. The given record key is ambiguous."); + public static final ErrorType RecordDeleteFailed = new ErrorType("error.db.recorddeletefailed", "Deleting the record {0} failed. The record might have been deleted already by another user."); // Field errors - public static final ErrorType FieldIsReadOnly = new ErrorType("error.db.fieldisreadonly", - "The field {0} is read only."); - public static final ErrorType FieldValueTooLong = new ErrorType("error.db.fieldvaluetoolong", - "The value supplied for field {0} is too long. The maximum number of characters is {1}."); - public static final ErrorType FieldNotNull = new ErrorType("error.db.fieldnotnull", - "The value for field {0} must not be null."); - public static final ErrorType FieldNotNumeric = new ErrorType("error.db.fieldnotnumeric", - "The field value supplied for field {0} is not numeric."); - public static final ErrorType FieldInvalidDateFormat = new ErrorType("error.db.fieldinvaliddateformat", - "The date supplied for field {0} is not valid."); - public static final ErrorType FieldInvalidValue = new ErrorType("error.db.fieldinvalidvalue", - "The value for field {0} is invalid."); + public static final ErrorType FieldIsReadOnly = new ErrorType("error.db.fieldisreadonly", "The field {0} is read only."); + public static final ErrorType FieldValueTooLong = new ErrorType("error.db.fieldvaluetoolong", "The value supplied for field {0} is too long. The maximum number of characters is {1}."); + public static final ErrorType FieldNotNull = new ErrorType("error.db.fieldnotnull", "The value for field {0} must not be null."); + public static final ErrorType FieldNotNumeric = new ErrorType("error.db.fieldnotnumeric", "The field value supplied for field {0} is not numeric."); + public static final ErrorType FieldInvalidDateFormat = new ErrorType("error.db.fieldinvaliddateformat", "The date supplied for field {0} is not valid."); + public static final ErrorType FieldInvalidValue = new ErrorType("error.db.fieldinvalidvalue", "The value for field {0} is invalid."); } Modified: incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBObject.java URL: http://svn.apache.org/viewvc/incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBObject.java?rev=1148444&r1=1148443&r2=1148444&view=diff ============================================================================== --- incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBObject.java (original) +++ incubator/empire-db/branches/EMPIREDB-99/empire-db/src/main/java/org/apache/empire/db/DBObject.java Tue Jul 19 16:53:34 2011 @@ -19,14 +19,15 @@ package org.apache.empire.db; // java.sql +import java.io.Serializable; +import java.sql.SQLException; + +import org.apache.empire.EmpireException; import org.apache.empire.commons.ErrorObject; import org.apache.empire.commons.ErrorType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.Serializable; -import java.sql.SQLException; - /** * Base class for all database related objects. @@ -47,7 +48,7 @@ public abstract class DBObject extends E * @return the database object */ public abstract DBDatabase getDatabase(); - + /** * Sets the current error from an SQL Exception. * @@ -56,15 +57,15 @@ public abstract class DBObject extends E * * @return the return value is always false */ - protected boolean error(ErrorType type, SQLException sqle) + protected EmpireException SQL2EmpireException(ErrorType type, SQLException sqle) { log.error("Database operation failed.", sqle); // converts a database error message to a human readable error message. DBDatabase db = getDatabase(); if (db!=null && db.getDriver()!=null) - return error(type, db.getDriver().extractErrorMessage(sqle)); + return new EmpireException(type, new Object[] { db.getDriver().extractErrorMessage(sqle) }, sqle); // Set the error Message - return error(type, sqle.getMessage()); + return new EmpireException(type, sqle.getMessage()); } /** @@ -74,9 +75,9 @@ public abstract class DBObject extends E * * @return the return value is always false */ - protected boolean error(SQLException sqle) - { // converts a database error message to a human readable error message. - return error(DBErrors.SQLException, sqle); + protected EmpireException SQL2EmpireException(SQLException sqle) + { // converts a database error message to a human readable error message. + return SQL2EmpireException(DBErrors.SQLException, sqle); } } \ No newline at end of file