You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2019/07/13 08:50:28 UTC

[empire-db] branch master updated: EMPIREDB-282: removed unnecessary validation checks

This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 028ecd4  EMPIREDB-282: removed unnecessary validation checks
028ecd4 is described below

commit 028ecd48aafcda7cd6c06c96bfbffe948dbeb3a0
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Sat Jul 13 10:50:22 2019 +0200

    EMPIREDB-282: removed unnecessary validation checks
---
 .../main/java/org/apache/empire/db/DBRecord.java   | 26 +++++++++++++++++++++-
 .../main/java/org/apache/empire/db/DBRowSet.java   | 10 ++++-----
 .../main/java/org/apache/empire/db/DBTable.java    |  2 +-
 3 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index 7224fff..c499c60 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -596,6 +596,30 @@ public class DBRecord extends DBRecordData implements Record, Cloneable
         if (fireChangeEvent)
             onFieldChanged(i);
     }
+    
+    /**
+     * validates all modified values of a record
+     */
+    public void validateAllValues()
+    {
+        if (!this.isValid())
+            throw new ObjectNotValidException(this);
+        // Modified
+        if (modified == null)
+            return; // nothing to do
+        // check for field
+        for (int index=0; index<fields.length; index++)
+        {   // Modified or No value?
+            if (modified[index]==false || fields[index]==ObjectUtils.NO_VALUE)
+                continue;
+            // Auto-generated ?
+            DBColumn column = rowset.getColumn(index);
+            if (column.isAutoGenerated())
+                continue;
+            // validate this one
+            fields[index] = validateValue(column, fields[index]);
+        }
+    }
 
     /**
      * Sets the value of the column in the record.
@@ -627,7 +651,7 @@ public class DBRecord extends DBRecordData implements Record, Cloneable
             throw new FieldIsReadOnlyException(column);
         }
         // Is Value valid
-        if (validateFieldValues)
+        if (this.validateFieldValues)
         	value = validateValue(column, value);
         // Init original values
         modifyValue(index, value, true);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index 505761d..8e31f47 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -754,9 +754,9 @@ public abstract class DBRowSet extends DBExpr
                 }
                 // Add the value to the command
                 if (empty==false)
-                {   // Check the value
-                    if (col.isAutoGenerated()==false && rec.isValidateFieldValues())
-                        col.validate(value);
+                {   // *** unnecessary check removed 2.5.0 ***
+                    // if (col.isAutoGenerated()==false && rec.isValidateFieldValues())
+                    //     col.validate(value);
                     // Insert a field
                     cmd.set(col.to(value));
                     setCount++;
@@ -813,8 +813,8 @@ public abstract class DBRowSet extends DBExpr
                 { 	// Update a field
                     if (col.isReadOnly())
                         log.warn("updateRecord: Read-only column '" + col.getName() + " has been modified!");
-                    // Check the value
-                    col.validate(value);
+                    // *** unnecessary check removed 2.5.0 ***
+                    // col.validate(value);  
                     // Set the column
                     cmd.set(col.to(value));
                     setCount++;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTable.java b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
index ad40e0d..aab8283 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTable.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
@@ -225,7 +225,7 @@ public class DBTable extends DBRowSet implements Cloneable
     protected DBTableColumn crateAndAppendColumn(String columnName, DataType type, double size, boolean required, Object defValue)
     { 
         // Make sure (DataType.INTEGER & DataMode.AutoGenerated) = DataType.AUTOINC
-        boolean autoGenerated = (type==DataType.AUTOINC);
+        boolean autoGenerated = (type==DataType.AUTOINC || type==DataType.UNIQUEID);
         DBTableColumn column = new DBTableColumn(this, type, columnName, size, required, autoGenerated, defValue);
         addColumn(column);
         // auto-set primary key