You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2008/10/22 19:03:28 UTC

svn commit: r707135 - in /ofbiz/trunk/framework/entity: dtd/entitymodel.xsd src/org/ofbiz/entity/jdbc/DatabaseUtil.java src/org/ofbiz/entity/model/ModelField.java

Author: jleroux
Date: Wed Oct 22 10:03:27 2008
New Revision: 707135

URL: http://svn.apache.org/viewvc?rev=707135&view=rev
Log:
A patch from Michael Imhof "Entity declaration: NOT NULL Fields on database" (https://issues.apache.org/jira/browse/OFBIZ-747) - OFBIZ-747
This is simple, clear and may turn useful in some cases. It can't hurt anything but will only work on a new data base.

Modified:
    ofbiz/trunk/framework/entity/dtd/entitymodel.xsd
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelField.java

Modified: ofbiz/trunk/framework/entity/dtd/entitymodel.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/dtd/entitymodel.xsd?rev=707135&r1=707134&r2=707135&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/dtd/entitymodel.xsd (original)
+++ ofbiz/trunk/framework/entity/dtd/entitymodel.xsd Wed Oct 22 10:03:27 2008
@@ -134,7 +134,29 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="enable-audit-log" default="false">
-            <xs:annotation><xs:documentation>If this is set to true then whenever the value for this field on a record changes the Entity Engine will record the change in the EntityAuditLog entity. Defaults to false.</xs:documentation></xs:annotation>
+            <xs:annotation>
+                <xs:documentation>
+                    If this is set to true then whenever the value for this field on a record changes the Entity Engine will record the change in the EntityAuditLog entity. 
+                    Defaults to false.
+                </xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="not-null" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    This makes the field NOT NULL on the database (like primary key fields).
+                    It's possible to use an id-ne similiar field type.
+                    But rows can be added from outside of ofbiz (e.g. database manager, third party programm, etc).
+                    This patch uses the ability of a database to set not null constraints. 
+                    Defaults to false.
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java?rev=707135&r1=707134&r2=707135&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java Wed Oct 22 10:03:27 2008
@@ -1746,7 +1746,7 @@
                 }
             }
 
-            if (field.getIsPk()) {
+            if (field.getIsNotNull() || field.getIsPk()) { 
                 if (this.datasourceInfo.alwaysUseConstraintKeyword) {
                     sqlBuf.append(" CONSTRAINT NOT NULL, ");
                 } else {
@@ -3247,7 +3247,7 @@
                     sqlBuf.append(this.datasourceInfo.collate);
                 }
 
-                if (field.getIsPk()) {
+                if (field.getIsPk()  || field.getIsNotNull()) {
                     if (this.datasourceInfo.alwaysUseConstraintKeyword) {
                         sqlBuf.append(" CONSTRAINT NOT NULL");
                     } else {

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelField.java?rev=707135&r1=707134&r2=707135&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelField.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelField.java Wed Oct 22 10:03:27 2008
@@ -42,6 +42,7 @@
     /** boolean which specifies whether or not the Field is a Primary Key */
     protected boolean isPk = false;
     protected boolean encrypt = false;
+    protected boolean isNotNull = false;
     protected boolean isAutoCreatedInternal = false;
     protected boolean enableAuditLog = false;
     
@@ -74,6 +75,7 @@
         this.encrypt = UtilXml.checkBoolean(fieldElement.getAttribute("encrypt"), false);
         this.description = UtilXml.childElementValue(fieldElement, "description");
         this.enableAuditLog = UtilXml.checkBoolean(fieldElement.getAttribute("enable-audit-log"), false);
+        this.isNotNull = UtilXml.checkBoolean(fieldElement.getAttribute("not-null"), false);
 
         NodeList validateList = fieldElement.getElementsByTagName("validate");
 
@@ -133,6 +135,14 @@
     public void setIsPk(boolean isPk) {
         this.isPk = isPk;
     }
+    
+    public boolean getIsNotNull() {
+        return this.isNotNull;
+    }
+
+    public void setIsNotNull(boolean isNotNull) {
+        this.isNotNull = isNotNull;
+    }
 
     public boolean getEncrypt() {
         return this.encrypt;
@@ -195,6 +205,9 @@
         if (this.getEncrypt()) {
             root.setAttribute("encrypt", "true");
         }
+        if (this.getIsNotNull()) {
+            root.setAttribute("not-null", "true");
+        }
 
         Iterator<String> valIter = this.validators.iterator();
         if (valIter != null) {