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 9e92f755 EMPIREDB-442 DBQuery not updateable by default. DBViewColumn 
not readonly by default.
9e92f755 is described below

commit 9e92f7554cbeb53f628c4a3ec1f6412e01c6eae0
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Oct 22 09:17:34 2024 +0200

    EMPIREDB-442
    DBQuery not updateable by default. DBViewColumn not readonly by default.
---
 .../apache/empire/jakarta/utils/TagEncodingHelper.java | 13 ++++++-------
 .../apache/empire/jsf2/utils/TagEncodingHelper.java    | 13 ++++++-------
 .../src/main/java/org/apache/empire/db/DBQuery.java    | 18 ++++++++++++++++--
 .../src/main/java/org/apache/empire/db/DBView.java     |  4 ----
 4 files changed, 28 insertions(+), 20 deletions(-)

diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
index 1aabb1b8..e6216700 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
@@ -924,13 +924,9 @@ public class TagEncodingHelper implements NamingContainer
             if (!(record instanceof Record))
                 return true;
         }
-        else 
-        {   // Value expression required
-            if (!hasValueExpression())
-                return true; // No Value expression given
-            // check attribute
-            Object val = getTagAttributeValue("readonly");
-            return ObjectUtils.getBoolean(val);
+        else if (!hasValueExpression())
+        {   // No Value expression given
+            return true;
         }
         // check attribute
         Object val = getTagAttributeValue("readonly");
@@ -938,6 +934,9 @@ public class TagEncodingHelper implements NamingContainer
         {   // override
             return ObjectUtils.getBoolean(val);
         }
+        // if value expression, don't check further
+        if (hasValueExpression())
+            return null;
         // check record component
         if (recordTag != null && recordTag.isReadOnly())
             return true;
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 933db2bf..1ef6e550 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -924,13 +924,9 @@ public class TagEncodingHelper implements NamingContainer
             if (!(record instanceof Record))
                 return true;
         }
-        else 
-        {   // Value expression required
-            if (!hasValueExpression())
-                return true; // No Value expression given
-            // check attribute
-            Object val = getTagAttributeValue("readonly");
-            return ObjectUtils.getBoolean(val);
+        else if (!hasValueExpression())
+        {   // No Value expression given
+            return true;
         }
         // check attribute
         Object val = getTagAttributeValue("readonly");
@@ -938,6 +934,9 @@ public class TagEncodingHelper implements NamingContainer
         {   // override
             return ObjectUtils.getBoolean(val);
         }
+        // if value expression, don't check further
+        if (hasValueExpression())
+            return null;
         // check record component
         if (recordTag != null && recordTag.isReadOnly())
             return true;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java 
b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index b4c52f2e..67eabbd9 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -95,6 +95,7 @@ public class DBQuery extends DBRowSet
     protected final DBColumn[]      keyColumns;
     protected final DBQueryColumn[] queryColumns;
     protected final String          alias;
+    protected boolean               updateable;
 
     /**
      * Constructor initializes the query object.
@@ -129,6 +130,7 @@ public class DBQuery extends DBRowSet
         }
         // Set the key Column
         this.keyColumns = keyColumns;
+        this.updateable = false;
     }
 
     /**
@@ -169,7 +171,7 @@ public class DBQuery extends DBRowSet
     }
 
     /**
-     * Creaes a DBQuery object from a given command object.
+     * Creates a DBQuery object from a given command object.
      * 
      * @param cmd the command object representing an SQL-Command.
      * @param alias the query alias
@@ -223,7 +225,19 @@ public class DBQuery extends DBRowSet
     @Override
     public boolean isUpdateable()
     {
-        return (getKeyColumns()!=null);
+        return updateable;
+    }
+    
+    /**
+     * Makes the Query updateable. Queries are not updateable by default. 
+     * For a query to be updateable it must have key columns
+     */
+    public void setUpdateable(boolean updateable)
+    {
+        if (updateable && getKeyColumns()==null)
+            throw new NotSupportedException(this, "setUpdateable");
+        // set updateable
+        this.updateable = updateable;
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBView.java 
b/empire-db/src/main/java/org/apache/empire/db/DBView.java
index a7c227e7..a0b183c8 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBView.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBView.java
@@ -137,8 +137,6 @@ public abstract class DBView extends DBRowSet implements 
Cloneable
         @Override
         public boolean isReadOnly()
         {   
-            if (getView().isUpdateable()==false)
-                return true;
             // Check ReadOnly attribute 
             if (updateColumn!=null)
                 return updateColumn.isReadOnly();
@@ -149,8 +147,6 @@ public abstract class DBView extends DBRowSet implements 
Cloneable
         @Override
         public boolean isRequired()
         {   
-            if (getView().isUpdateable()==false)
-                return false;
             // Check update Column
             if (updateColumn==null)
                 return false;

Reply via email to