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 2007/12/09 23:29:13 UTC
svn commit: r602742 - in /cayenne/main/trunk/framework:
cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/
cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/
cayenne-modeler/src/main/java/org/apache/cayenne...
Author: aadamchik
Date: Sun Dec 9 14:29:12 2007
New Revision: 602742
URL: http://svn.apache.org/viewvc?rev=602742&view=rev
Log:
CAY-933 Embeddable classes - support class generation
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/embeddable-superclass.vm
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/embeddable-superclass.vm
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/embeddable-superclass.vm?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/embeddable-superclass.vm (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/resources/dotemplates/v1_2/embeddable-superclass.vm Sun Dec 9 14:29:12 2007
@@ -85,17 +85,15 @@
}
#if ( $importUtils.isBoolean(${attr.Type}) )
public boolean is${stringUtils.capitalized($attr.Name)}() {
- Boolean value = (Boolean)readProperty("${attr.Name}");
- return (value != null) ? value.booleanValue() : false;
+ return $stringUtils.formatVariableName(${attr.Name});
}
#elseif ( $importUtils.isNonBooleanPrimitive(${attr.Type}) )
public $classGen.formatJavaType(${attr.Type}) get${stringUtils.capitalized($attr.Name)}() {
- Object value = readProperty("${attr.Name}");
- return (value != null) ? ($importUtils.formatJavaTypeAsNonBooleanPrimitive(${attr.Type})) value : 0;
+ return $stringUtils.formatVariableName(${attr.Name});
}
#else
public $importUtils.formatJavaType(${attr.Type}) get${stringUtils.capitalized($attr.Name)}() {
- return ($importUtils.formatJavaType(${attr.Type}))readProperty("${attr.Name}");
+ return $stringUtils.formatVariableName(${attr.Name});
}
#end
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java Sun Dec 9 14:29:12 2007
@@ -1,13 +1,15 @@
package org.apache.cayenne.testdo.embeddable.auto;
+import org.apache.cayenne.CayenneDataObject;
import org.apache.cayenne.testdo.embeddable.Embeddable1;
-/** Class _EmbedEntity1 was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public class _EmbedEntity1 extends org.apache.cayenne.CayenneDataObject {
+/**
+ * Class _EmbedEntity1 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _EmbedEntity1 extends CayenneDataObject {
public static final String EMBEDDED1_PROPERTY = "embedded1";
public static final String EMBEDDED2_PROPERTY = "embedded2";
@@ -15,28 +17,25 @@
public static final String ID_PK_COLUMN = "ID";
- public void setEmbedded1(Embeddable1 e) {
- writeProperty("embedded1", e);
+ public void setEmbedded1(Embeddable1 embedded1) {
+ writeProperty("embedded1", embedded1);
}
public Embeddable1 getEmbedded1() {
return (Embeddable1)readProperty("embedded1");
}
-
-
- public void setEmbedded2(Embeddable1 e) {
- writeProperty("embedded2", e);
+
+ public void setEmbedded2(Embeddable1 embedded2) {
+ writeProperty("embedded2", embedded2);
}
public Embeddable1 getEmbedded2() {
return (Embeddable1)readProperty("embedded2");
}
-
-
+
public void setName(String name) {
writeProperty("name", name);
}
public String getName() {
return (String)readProperty("name");
}
-
-
+
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_Embeddable1.java Sun Dec 9 14:29:12 2007
@@ -1,58 +1,52 @@
-/*****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ****************************************************************/
package org.apache.cayenne.testdo.embeddable.auto;
import org.apache.cayenne.Persistent;
-public class _Embeddable1 {
+/**
+ * Embeddable class _Embeddable1 was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Embeddable1 extends Object {
+ public static final String EMBEDDED10_PROPERTY = "embedded10";
+ public static final String EMBEDDED20_PROPERTY = "embedded20";
+
+ // special properties injected by Cayenne
private Persistent owner;
private String embeddedProperty;
-
+
+ // declared properties
protected String embedded10;
protected String embedded20;
- public String getEmbedded10() {
- return embedded10;
+ // lifecycle methods
+ protected void propertyWillChange(String property, Object oldValue, Object newValue) {
+ if (owner != null && owner.getObjectContext() != null) {
+ owner.getObjectContext().propertyChanged(
+ owner,
+ embeddedProperty + "." + property,
+ oldValue,
+ newValue);
+ }
}
+ // declared getters and setters
public void setEmbedded10(String embedded10) {
- propertyWillChange("embdedded10", this.embedded10, embedded10);
+ propertyWillChange("embedded10", this.embedded10, embedded10);
this.embedded10 = embedded10;
}
-
- public String getEmbedded20() {
- return embedded20;
+ public String getEmbedded10() {
+ return embedded10;
}
public void setEmbedded20(String embedded20) {
- propertyWillChange("embdedded20", this.embedded20, embedded20);
+ propertyWillChange("embedded20", this.embedded20, embedded20);
this.embedded20 = embedded20;
}
-
- protected void propertyWillChange(String property, Object oldValue, Object newValue) {
- if (owner != null && owner.getObjectContext() != null) {
- owner.getObjectContext().propertyChanged(
- owner,
- embeddedProperty + "." + property,
- oldValue,
- newValue);
- }
+ public String getEmbedded20() {
+ return embedded20;
}
+
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CodeGeneratorControllerBase.java Sun Dec 9 14:29:12 2007
@@ -21,17 +21,19 @@
import java.awt.Component;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.apache.commons.collections.Predicate;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.validation.ValidationFailure;
import org.apache.cayenne.validation.ValidationResult;
+import org.apache.commons.collections.Predicate;
/**
* A base superclass of a top controller for the code generator. Defines all common model
@@ -103,6 +105,12 @@
}
return modified;
+ }
+
+ public Collection<Embeddable> getSelectedEmbeddables() {
+ // TODO: andrus, 12/9/2007 - until Modeler filtering of embeddables is
+ // implemented, show all embeddables we have
+ return dataMap.getEmbeddables();
}
public List<ObjEntity> getSelectedEntities() {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java Sun Dec 9 14:29:12 2007
@@ -31,6 +31,9 @@
import javax.swing.JTextField;
import org.apache.cayenne.gen.ClassGenerationAction;
+import org.apache.cayenne.map.Attribute;
+import org.apache.cayenne.map.EmbeddableAttribute;
+import org.apache.cayenne.map.EmbeddedAttribute;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
@@ -147,6 +150,7 @@
ClassGenerationAction generator = newGenerator();
generator.setDataMap(getParentController().getDataMap());
generator.addEntities(entities);
+ generator.addEmbeddables(getParentController().getSelectedEmbeddables());
// configure encoding from preferences
Domain generatorPrefs = Application
@@ -187,10 +191,20 @@
return;
}
- {
- Iterator it = entity.getAttributes().iterator();
- while (it.hasNext()) {
- ValidationFailure failure = validateAttribute((ObjAttribute) it.next());
+ for (Attribute attribute : entity.getAttributes()) {
+ if (attribute instanceof EmbeddedAttribute) {
+ EmbeddedAttribute embeddedAttribute = (EmbeddedAttribute) attribute;
+ for (ObjAttribute subAttribute : embeddedAttribute.getAttributes()) {
+ ValidationFailure failure = validateAttribute(subAttribute);
+ if (failure != null) {
+ validationBuffer.addFailure(failure);
+ return;
+ }
+ }
+ }
+ else {
+
+ ValidationFailure failure = validateAttribute((ObjAttribute) attribute);
if (failure != null) {
validationBuffer.addFailure(failure);
return;
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java?rev=602742&r1=602741&r2=602742&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java Sun Dec 9 14:29:12 2007
@@ -24,6 +24,7 @@
import java.util.Comparator;
import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.map.Attribute;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjAttribute;
@@ -231,8 +232,8 @@
final class AttributeComparator implements Comparator {
public int compare(Object o1, Object o2) {
- ObjAttribute a1 = (ObjAttribute) o1;
- ObjAttribute a2 = (ObjAttribute) o2;
+ Attribute a1 = (Attribute) o1;
+ Attribute a2 = (Attribute) o2;
int delta = getWeight(a1) - getWeight(a2);
@@ -241,7 +242,7 @@
: Util.nullSafeCompare(true, a1.getName(), a2.getName());
}
- private int getWeight(ObjAttribute a) {
+ private int getWeight(Attribute a) {
return a.getEntity() == entity ? 1 : -1;
}
}