You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/08/03 06:35:47 UTC

svn commit: r428232 - in /incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa: conf/EntityMapDefaultsProcessor.java map/JpaAttributes.java

Author: aadamchik
Date: Wed Aug  2 21:35:46 2006
New Revision: 428232

URL: http://svn.apache.org/viewvc?rev=428232&view=rev
Log:
fixing attribute defaults loading

Modified:
    incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/conf/EntityMapDefaultsProcessor.java
    incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaAttributes.java

Modified: incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/conf/EntityMapDefaultsProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/conf/EntityMapDefaultsProcessor.java?rev=428232&r1=428231&r2=428232&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/conf/EntityMapDefaultsProcessor.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/conf/EntityMapDefaultsProcessor.java Wed Aug  2 21:35:46 2006
@@ -113,6 +113,10 @@
                 entity.setName(split > 0 ? fqName.substring(split + 1) : fqName);
             }
 
+            if (entity.getAttributes() == null) {
+                entity.setAttributes(new JpaAttributes());
+            }
+
             // * default persistent fields
             JpaClassDescriptor descriptor = entity.getClassDescriptor();
 
@@ -150,29 +154,27 @@
                 JpaClassDescriptor descriptor,
                 JpaPropertyDescriptor property) {
 
-            // if (entity.attributeForName(property.getName()) != null
-            // || entity.idForName(property.getName()) != null) {
-            // return;
-            // }
-            //
-            // if (property.isDefaultNonRelationalType()) {
-            //
-            // JpaAttribute attribute = new JpaAttribute();
-            //
-            // attribute.setPropertyDescriptor(property);
-            //
-            // attribute.setBasic(new JpaBasic());
-            // attribute.setName(property.getName());
-            // entity.getAttributes().add(attribute);
-            // }
-            // else {
-            // String path = descriptor.getManagedClass().getName()
-            // + "."
-            // + property.getName();
-            //                context.recordConflict(new SimpleValidationFailure(
-            //                        property.getMember(),
-            //                        "Undefined property persistence status: " + path));
-            //            }
+            JpaAttributes attributes = entity.getAttributes();
+            if (attributes.getAttribute(property.getName()) != null) {
+                return;
+            }
+
+            if (property.isDefaultNonRelationalType()) {
+
+                JpaBasic attribute = new JpaBasic();
+
+                attribute.setPropertyDescriptor(property);
+                attribute.setName(property.getName());
+                attributes.getBasicAttributes().add(attribute);
+            }
+            else {
+                String path = descriptor.getManagedClass().getName()
+                        + "."
+                        + property.getName();
+                context.recordConflict(new SimpleValidationFailure(
+                        property.getMember(),
+                        "Undefined property persistence status: " + path));
+            }
         }
     }
 
@@ -212,8 +214,7 @@
         public boolean onStartNode(ProjectPath path) {
             JpaColumn column = (JpaColumn) path.getObject();
 
-            JpaAttribute parent = (JpaAttribute) path
-                    .firstInstanceOf(JpaAttribute.class);
+            JpaAttribute parent = (JpaAttribute) path.firstInstanceOf(JpaAttribute.class);
 
             if (column.getName() == null) {
                 column.setName(parent.getName());

Modified: incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaAttributes.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaAttributes.java?rev=428232&r1=428231&r2=428232&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaAttributes.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaAttributes.java Wed Aug  2 21:35:46 2006
@@ -41,6 +41,65 @@
     protected Collection<JpaEmbedded> embeddedAttributes;
     protected Collection<JpaTransient> transientAttributes;
 
+    public JpaAttribute getAttribute(String name) {
+        if (name == null) {
+            return null;
+        }
+
+        if (embeddedId != null && name.equals(embeddedId.getName())) {
+            return embeddedId;
+        }
+
+        JpaAttribute attribute;
+
+        attribute = getId(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getBasicAttribute(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getVersionAttribute(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getManyToOneRelationship(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getOneToManyRelationship(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getOneToOneRelationship(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getManyToManyRelationship(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getTransientAttribute(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        attribute = getEmbeddedAttribute(name);
+        if (attribute != null) {
+            return attribute;
+        }
+
+        return null;
+    }
+
     /**
      * Returns combined count of all attributes and relationships.
      */
@@ -179,13 +238,29 @@
         return embeddedAttributes;
     }
 
+    public JpaEmbedded getEmbeddedAttribute(String attributeName) {
+        if (attributeName == null) {
+            throw new IllegalArgumentException("Null attribute name");
+        }
+
+        if (embeddedAttributes != null) {
+            for (JpaEmbedded attribute : embeddedAttributes) {
+                if (attributeName.equals(attribute.getName())) {
+                    return attribute;
+                }
+            }
+        }
+
+        return null;
+    }
+
     public Collection<JpaManyToMany> getManyToManyRelationships() {
         if (manyToManyRelationships == null) {
             manyToManyRelationships = new ArrayList<JpaManyToMany>();
         }
         return manyToManyRelationships;
     }
-    
+
     public JpaManyToMany getManyToManyRelationship(String attributeName) {
         if (attributeName == null) {
             throw new IllegalArgumentException("Null attribute name");
@@ -222,7 +297,7 @@
         }
         return oneToOneRelationships;
     }
-    
+
     public JpaOneToOne getOneToOneRelationship(String attributeName) {
         if (attributeName == null) {
             throw new IllegalArgumentException("Null attribute name");
@@ -245,7 +320,7 @@
         }
         return transientAttributes;
     }
-    
+
     /**
      * Returns a JpaTransient for a given property name
      */
@@ -270,5 +345,24 @@
             versionAttributes = new ArrayList<JpaVersion>();
         }
         return versionAttributes;
+    }
+
+    /**
+     * Returns a JpaTransient for a given property name
+     */
+    public JpaVersion getVersionAttribute(String attributeName) {
+        if (attributeName == null) {
+            throw new IllegalArgumentException("Null attribute name");
+        }
+
+        if (versionAttributes != null) {
+            for (JpaVersion attribute : versionAttributes) {
+                if (attributeName.equals(attribute.getName())) {
+                    return attribute;
+                }
+            }
+        }
+
+        return null;
     }
 }