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/23 11:56:21 UTC
svn commit: r606548 - in /cayenne/main/trunk/framework:
cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/
cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/
cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ ...
Author: aadamchik
Date: Sun Dec 23 02:56:20 2007
New Revision: 606548
URL: http://svn.apache.org/viewvc?rev=606548&view=rev
Log:
CAY-948 Implement flattened attributes in Cayenne
(preliminary cleanup and deprecation of API that worked only for non-flattened attributes)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EntityMergeSupport.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjAttributeTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjEntityInheritanceTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergerFactoryTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ObjAttributeValidatorTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ValidatorTestBase.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjAttributeTableModel.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java Sun Dec 23 02:56:20 2007
@@ -26,7 +26,6 @@
import org.apache.cayenne.util.Util;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.commons.collections.IteratorUtils;
-import org.apache.commons.lang.StringUtils;
/**
* An ObjAttribute is a mapping descriptor of a Java class property.
@@ -176,54 +175,55 @@
/**
* Set mapped DbAttribute.
+ *
+ * @deprecated since 3.0 - this method only works for non-flattened attributes.
+ * 'setDbAttributePath' should be used instead.
*/
public void setDbAttribute(DbAttribute dbAttribute) {
if (dbAttribute == null) {
- this.setDbAttributePath(null);
+ setDbAttributePath(null);
}
else {
- this.setDbAttributePath(dbAttribute.getName());
+ setDbAttributePath(dbAttribute.getName());
}
}
/**
- * Returns the dbAttributeName.
- *
- * @return String
+ * Returns the the name of the mapped DbAttribute. This value is the same as
+ * "dbAttributePath" for regular attributes mapped to columns. It is equql to the last
+ * path component for the flattened attributes.
*/
public String getDbAttributeName() {
- if (dbAttributePath == null)
+ if (dbAttributePath == null) {
return null;
- int lastPartStart = dbAttributePath.lastIndexOf('.');
- String lastPart = StringUtils.substring(
- dbAttributePath,
- lastPartStart + 1,
- dbAttributePath.length());
- return lastPart;
+ }
+
+ int lastDot = dbAttributePath.lastIndexOf('.');
+ if (lastDot < 0) {
+ return dbAttributePath;
+ }
+
+ return dbAttributePath.substring(lastDot + 1);
}
/**
- * Sets the dbAttributeName.
+ * Sets the name of the mapped DbAttribute.
*
- * @param dbAttributeName The dbAttributeName to set
+ * @deprecated since 3.0 use {@link #setDbAttributePath(String)}.
*/
- public void setDbAttributeName(String dbAttributeName) {
- if (dbAttributePath == null || dbAttributeName == null) {
- dbAttributePath = dbAttributeName;
- return;
- }
- int lastPartStart = dbAttributePath.lastIndexOf('.');
- String newPath = (lastPartStart > 0
- ? StringUtils.chomp(dbAttributePath, ".")
- : "");
- newPath += (newPath.length() > 0 ? "." : "") + dbAttributeName;
- this.dbAttributePath = newPath;
+ public void setDbAttributeName(String name) {
+ setDbAttributePath(name);
}
public void setDbAttributePath(String dbAttributePath) {
this.dbAttributePath = dbAttributePath;
}
+ /**
+ * Returns a dot-separated path that starts in the root DbEntity that maps to this
+ * attribute's ObjEntity and spans zero or more relationships, always ending in a
+ * DbAttribute name.
+ */
public String getDbAttributePath() {
return dbAttributePath;
}
@@ -241,7 +241,7 @@
public ObjAttribute getClientAttribute() {
ClientObjAttribute attribute = new ClientObjAttribute(getName());
attribute.setType(getType());
-
+
DbAttribute dbAttribute = getDbAttribute();
if (dbAttribute != null) {
attribute.setMandatory(dbAttribute.isMandatory());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java Sun Dec 23 02:56:20 2007
@@ -764,7 +764,7 @@
ObjAttribute objAttr = (ObjAttribute) attribute;
DbAttribute dbAttr = objAttr.getDbAttribute();
if (null != dbAttr) {
- objAttr.setDbAttribute(null);
+ objAttr.setDbAttributePath(null);
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EntityMergeSupport.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EntityMergeSupport.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EntityMergeSupport.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/EntityMergeSupport.java Sun Dec 23 02:56:20 2007
@@ -121,7 +121,7 @@
String type = TypesMapping.getJavaBySqlType(da.getType());
ObjAttribute oa = new ObjAttribute(attrName, type, entity);
- oa.setDbAttribute(da);
+ oa.setDbAttributePath(da.getName());
entity.addAttribute(oa);
changed = true;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjAttributeTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjAttributeTest.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjAttributeTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjAttributeTest.java Sun Dec 23 02:56:20 2007
@@ -31,8 +31,19 @@
ObjAttribute attribute = new ObjAttribute("a1");
DbAttribute dbAttr = new DbAttribute("tst_name", Types.INTEGER, null);
- attribute.setDbAttribute(dbAttr);
+ attribute.setDbAttributePath(dbAttr.getName());
assertEquals(dbAttr.getName(), attribute.getDbAttributeName());
+ }
+
+ public void testDbAttributePath() {
+ ObjAttribute attribute = new ObjAttribute("a1");
+ attribute.setDbAttributePath("a");
+ assertEquals("a", attribute.getDbAttributePath());
+ assertEquals("a", attribute.getDbAttributeName());
+
+ attribute.setDbAttributePath("a.b");
+ assertEquals("a.b", attribute.getDbAttributePath());
+ assertEquals("b", attribute.getDbAttributeName());
}
public void testType() {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjEntityInheritanceTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjEntityInheritanceTest.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjEntityInheritanceTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/ObjEntityInheritanceTest.java Sun Dec 23 02:56:20 2007
@@ -128,8 +128,8 @@
entity1.setSuperEntityName("e2");
entity2.setDbEntityName(dbEntity.getName());
- attribute1.setDbAttribute(dbAttribute1);
- attribute2.setDbAttribute(dbAttribute2);
+ attribute1.setDbAttributePath(dbAttribute1.getName());
+ attribute2.setDbAttributePath(dbAttribute2.getName());
assertNull(entity2.getAttributeForDbAttribute(dbAttribute1));
assertSame(attribute2, entity2.getAttributeForDbAttribute(dbAttribute2));
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergerFactoryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergerFactoryTest.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergerFactoryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/merge/MergerFactoryTest.java Sun Dec 23 02:56:20 2007
@@ -186,7 +186,7 @@
ObjEntity objEntity = new ObjEntity("NewTable");
objEntity.setDbEntity(dbEntity);
ObjAttribute oatr1 = new ObjAttribute("name");
- oatr1.setDbAttribute(column2);
+ oatr1.setDbAttributePath(column2.getName());
oatr1.setType("java.lang.String");
objEntity.addAttribute(oatr1);
map.addObjEntity(objEntity);
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ObjAttributeValidatorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ObjAttributeValidatorTest.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ObjAttributeValidatorTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ObjAttributeValidatorTest.java Sun Dec 23 02:56:20 2007
@@ -41,7 +41,7 @@
validator);
assertValidator(ValidationInfo.VALID);
- oa1.setDbAttribute(null);
+ oa1.setDbAttributePath(null);
validator.reset();
new ObjAttributeValidator().validateObject(
new ProjectPath(new Object[] { project, d1, m1, oa1.getEntity(), oa1 }),
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ValidatorTestBase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ValidatorTestBase.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ValidatorTestBase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/project/validator/ValidatorTestBase.java Sun Dec 23 02:56:20 2007
@@ -101,7 +101,7 @@
ObjAttribute oa1 = new ObjAttribute(name, "java.lang.Integer", oe1);
oe1.addAttribute(oa1);
- oa1.setDbAttribute(a1);
+ oa1.setDbAttributePath(a1.getName());
return oa1;
}
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=606548&r1=606547&r2=606548&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 23 02:56:20 2007
@@ -35,15 +35,15 @@
import org.apache.cayenne.modeler.util.ProjectUtil;
import org.apache.cayenne.util.Util;
-/**
- * Model for the Object Entity attributes and for Obj to
- * DB Attribute Mapping tables. Allows adding/removing attributes,
- * modifying the types and the names.
+/**
+ * Model for the Object Entity attributes and for Obj to DB Attribute Mapping tables.
+ * Allows adding/removing attributes, modifying the types and the names.
*
- * @author Michael Misha Shengaout.
+ * @author Michael Misha Shengaout.
* @author Andrus Adamchik
*/
public class ObjAttributeTableModel extends CayenneTableModel {
+
// Columns
static final int OBJ_ATTRIBUTE = 0;
static final int OBJ_ATTRIBUTE_TYPE = 1;
@@ -51,15 +51,12 @@
static final int DB_ATTRIBUTE_TYPE = 3;
static final int LOCKING = 4;
-
protected ObjEntity entity;
protected DbEntity dbEntity;
- public ObjAttributeTableModel(
- ObjEntity entity,
- ProjectController mediator,
- Object eventSource) {
- super(mediator, eventSource, new ArrayList(entity.getAttributes()));
+ public ObjAttributeTableModel(ObjEntity entity, ProjectController mediator,
+ Object eventSource) {
+ super(mediator, eventSource, new ArrayList<Attribute>(entity.getAttributes()));
// take a copy
this.entity = entity;
this.dbEntity = entity.getDbEntity();
@@ -74,9 +71,9 @@
public Class getColumnClass(int col) {
switch (col) {
- case LOCKING :
+ case LOCKING:
return Boolean.class;
- default :
+ default:
return String.class;
}
}
@@ -84,7 +81,8 @@
/**
* Returns ObjAttribute class.
*/
- public Class getElementsClass() {
+ @Override
+ public Class<?> getElementsClass() {
return ObjAttribute.class;
}
@@ -94,11 +92,11 @@
public ObjAttribute getAttribute(int row) {
return (row >= 0 && row < objectList.size())
- ? (ObjAttribute) objectList.get(row)
- : null;
+ ? (ObjAttribute) objectList.get(row)
+ : null;
}
- /** Refreshes DbEntity to current db entity within ObjEntity.*/
+ /** Refreshes DbEntity to current db entity within ObjEntity. */
public void resetDbEntity() {
if (dbEntity == entity.getDbEntity()) {
return;
@@ -125,17 +123,17 @@
public String getColumnName(int column) {
switch (column) {
- case OBJ_ATTRIBUTE :
+ case OBJ_ATTRIBUTE:
return "ObjAttribute";
- case OBJ_ATTRIBUTE_TYPE :
+ case OBJ_ATTRIBUTE_TYPE:
return "Java Type";
- case DB_ATTRIBUTE :
+ case DB_ATTRIBUTE:
return "DbAttribute";
- case DB_ATTRIBUTE_TYPE :
+ case DB_ATTRIBUTE_TYPE:
return "DB Type";
- case LOCKING :
+ case LOCKING:
return "Used for Locking";
- default :
+ default:
return "";
}
}
@@ -175,9 +173,9 @@
if (column == OBJ_ATTRIBUTE) {
event.setOldName(attribute.getName());
- ProjectUtil.setAttributeName(
- attribute,
- value != null ? value.toString().trim() : null);
+ ProjectUtil.setAttributeName(attribute, value != null ? value
+ .toString()
+ .trim() : null);
fireTableCellUpdated(row, column);
}
else if (column == OBJ_ATTRIBUTE_TYPE) {
@@ -185,21 +183,22 @@
fireTableCellUpdated(row, column);
}
else if (column == LOCKING) {
- attribute.setUsedForLocking(
- (value instanceof Boolean) && ((Boolean) value).booleanValue());
+ attribute.setUsedForLocking((value instanceof Boolean)
+ && ((Boolean) value).booleanValue());
fireTableCellUpdated(row, column);
}
else {
- DbAttribute dbAttribute = attribute.getDbAttribute();
if (column == DB_ATTRIBUTE) {
// If db attrib exist, associate it with obj attribute
if (value != null) {
- dbAttribute = (DbAttribute) dbEntity.getAttribute(value.toString());
- attribute.setDbAttribute(dbAttribute);
+ DbAttribute dbAttribute = (DbAttribute) dbEntity.getAttribute(value
+ .toString());
+ String path = dbAttribute != null ? dbAttribute.getName() : null;
+ attribute.setDbAttributePath(path);
}
// If name is erased, remove db attribute from obj attribute.
- else if (dbAttribute != null) {
- attribute.setDbAttribute(null);
+ else if (attribute.getDbAttribute() != null) {
+ attribute.setDbAttributePath(null);
}
}
@@ -231,15 +230,15 @@
}
final class AttributeComparator implements Comparator {
+
public int compare(Object o1, Object o2) {
Attribute a1 = (Attribute) o1;
Attribute a2 = (Attribute) o2;
int delta = getWeight(a1) - getWeight(a2);
- return (delta != 0)
- ? delta
- : Util.nullSafeCompare(true, a1.getName(), a2.getName());
+ return (delta != 0) ? delta : Util.nullSafeCompare(true, a1.getName(), a2
+ .getName());
}
private int getWeight(Attribute a) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneTableModel.java Sun Dec 23 02:56:20 2007
@@ -102,7 +102,7 @@
/**
* Returns Java class of the internal list elements.
*/
- public abstract Class getElementsClass();
+ public abstract Class<?> getElementsClass();
/**
* Returns the key by which to order elements in the object list. Default value is
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java?rev=606548&r1=606547&r2=606548&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java Sun Dec 23 02:56:20 2007
@@ -256,7 +256,7 @@
DbAttribute dbAtt = att.getDbAttribute();
if (dbAtt != null) {
if (dbEnt.getAttribute(dbAtt.getName()) != dbAtt) {
- att.setDbAttribute(null);
+ att.setDbAttributePath(null);
}
}
}
@@ -295,7 +295,7 @@
ObjAttribute objAttr = (ObjAttribute) it.next();
DbAttribute dbAttr = objAttr.getDbAttribute();
if (null != dbAttr) {
- objAttr.setDbAttribute(null);
+ objAttr.setDbAttributePath(null);
}
}