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 2009/10/27 11:01:51 UTC
svn commit: r830111 - in
/cayenne/main/trunk/framework/cayenne-modeler/src/main:
java/org/apache/cayenne/modeler/dialog/datamap/
java/org/apache/cayenne/modeler/dialog/objentity/
java/org/apache/cayenne/modeler/editor/ resources/org/apache/cayenne/mode...
Author: aadamchik
Date: Tue Oct 27 10:01:50 2009
New Revision: 830111
URL: http://svn.apache.org/viewvc?rev=830111&view=rev
Log:
CAY-1295 Finish modeler support for embeddables and embedded attributes
2 merged patches by Olga Tkachova
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/PackageUpdateController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.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/editor/ObjEntityAttributeTab.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/PackageUpdateController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/PackageUpdateController.java?rev=830111&r1=830110&r2=830111&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/PackageUpdateController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/datamap/PackageUpdateController.java Tue Oct 27 10:01:50 2009
@@ -57,7 +57,7 @@
*/
public void startup() {
SPanel view = new DefaultsPreferencesDialog(ALL_CONTROL, UNINIT_CONTROL);
- view.setTitle("Update ObjEntities Java Package");
+ view.setTitle("Update ObjEntities and Embeddables Java Package");
setView(view);
super.startup();
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java?rev=830111&r1=830110&r2=830111&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java Tue Oct 27 10:01:50 2009
@@ -376,7 +376,6 @@
private void rebuildTable() {
String typeName = null;
-
Collection<EmbeddableAttribute> embAttrTempCopy = new ArrayList<EmbeddableAttribute>();
if (attributeSaved.getType() != null) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java?rev=830111&r1=830110&r2=830111&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataMapView.java Tue Oct 27 10:01:50 2009
@@ -615,7 +615,7 @@
return;
}
- if (dataMap.getObjEntities().size() > 0) {
+ if (dataMap.getObjEntities().size() > 0 || dataMap.getEmbeddables().size() > 0) {
new PackageUpdateController(eventController, dataMap, false).startup();
}
}
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=830111&r1=830110&r2=830111&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 Tue Oct 27 10:01:50 2009
@@ -20,9 +20,12 @@
package org.apache.cayenne.modeler.editor;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.List;
+
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import org.apache.cayenne.dba.TypesMapping;
@@ -30,11 +33,16 @@
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.EmbeddedAttribute;
import org.apache.cayenne.map.event.AttributeEvent;
+import org.apache.cayenne.map.event.EntityEvent;
+import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.event.AttributeDisplayEvent;
+import org.apache.cayenne.modeler.event.EntityDisplayEvent;
import org.apache.cayenne.modeler.util.CayenneTable;
import org.apache.cayenne.modeler.util.CayenneTableModel;
import org.apache.cayenne.modeler.util.CayenneWidgetFactory;
@@ -247,7 +255,53 @@
fireTableCellUpdated(row, column);
}
else if (column == OBJ_ATTRIBUTE_TYPE) {
+ String oldType = attribute.getType();
attribute.setType(value != null ? value.toString() : null);
+ String newType = attribute.getType();
+ String[] registeredTypes = ModelerUtil.getRegisteredTypeNames();
+ Collection<String> registeredTypesList = Arrays.asList(registeredTypes); ;
+ if(oldType!=null && newType!=null && ! (registeredTypesList.contains(oldType) == registeredTypesList.contains(newType))){
+ ObjAttribute attributeNew;
+ if(registeredTypesList.contains(newType)){
+ attributeNew = new ObjAttribute();
+ } else {
+ attributeNew = new EmbeddedAttribute();
+ attribute.setDbAttributePath(null);
+ }
+
+ attributeNew.setDbAttributePath(attribute.getDbAttributePath());
+ attributeNew.setName(attribute.getName());
+ attributeNew.setEntity(attribute.getEntity());
+ attributeNew.setParent(attribute.getParent());
+ attributeNew.setType(attribute.getType());
+ attributeNew.setUsedForLocking(attribute.isUsedForLocking());
+ Entity ent = attribute.getEntity();
+ ent.removeAttribute(attribute.getName());
+ ent.addAttribute(attributeNew);
+
+ mediator.fireObjEntityEvent(new EntityEvent(
+ this,
+ ent,
+ MapEvent.CHANGE));
+
+ EntityDisplayEvent ev = new EntityDisplayEvent(this, mediator
+ .getCurrentObjEntity(), mediator.getCurrentDataMap(), mediator
+ .getCurrentDataDomain());
+
+ mediator.fireObjEntityDisplayEvent(ev);
+
+ mediator.fireObjAttributeEvent(new AttributeEvent(this, attributeNew, ent, MapEvent.CHANGE));
+
+ AttributeDisplayEvent eventAttr = new AttributeDisplayEvent(
+ this,
+ attributeNew,
+ mediator.getCurrentObjEntity(),
+ mediator.getCurrentDataMap(),
+ mediator.getCurrentDataDomain());
+
+ mediator.fireObjAttributeDisplayEvent(eventAttr);
+ }
+
fireTableCellUpdated(row, column);
}
else if (column == LOCKING) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributeTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributeTab.java?rev=830111&r1=830110&r2=830111&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributeTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ObjEntityAttributeTab.java Tue Oct 27 10:01:50 2009
@@ -25,8 +25,10 @@
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.EventObject;
+import java.util.Iterator;
import java.util.List;
import javax.swing.Icon;
@@ -43,6 +45,7 @@
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
+import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.AttributeEvent;
@@ -68,6 +71,7 @@
import org.apache.cayenne.modeler.util.PanelFactory;
import org.apache.cayenne.modeler.util.UIUtil;
import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import org.apache.cayenne.project.ProjectPath;
/**
* Detail view of the ObjEntity attributes.
@@ -178,6 +182,34 @@
}
public void initComboBoxes(ObjAttributeTableModel model) {
+
+ List<String> embeddableNames = new ArrayList<String>();
+ List<String> typeNames = new ArrayList<String>();
+
+ Iterator it = mediator.getProject().treeNodes();
+ while (it.hasNext()) {
+ ProjectPath path = (ProjectPath) it.next();
+ Object o = path.getObject();
+ Object[] p = path.getPath();
+ if (o instanceof Embeddable) {
+ Embeddable emb = (Embeddable) p[p.length - 1];
+ embeddableNames.add(emb.getClassName());
+ }
+ }
+
+ String[] registeredTypes = ModelerUtil.getRegisteredTypeNames();
+ for(int i=0; i< registeredTypes.length; i++){
+ typeNames.add(registeredTypes[i]);
+ }
+ typeNames.addAll(embeddableNames);
+
+ TableColumn typeColumn = table.getColumnModel().getColumn(
+ ObjAttributeTableModel.OBJ_ATTRIBUTE_TYPE);
+
+ JComboBox javaTypesCombo = CayenneWidgetFactory.createComboBox(typeNames.toArray(), false);
+ AutoCompletion.enable(javaTypesCombo, false, true);
+ typeColumn.setCellEditor(CayenneWidgetFactory.createCellEditor(javaTypesCombo));
+
TableColumn dbNameColumn = table.getColumnModel().getColumn(
ObjAttributeTableModel.DB_ATTRIBUTE);
dbNameColumn.setMinWidth(150);
@@ -190,6 +222,7 @@
model.setCellEditor(nameAttr, table);
model.setComboBoxes(nameAttr, ObjAttributeTableModel.DB_ATTRIBUTE);
}
+
}
/**
@@ -308,11 +341,6 @@
ObjAttributeTableModel.OBJ_ATTRIBUTE_TYPE);
typeColumn.setMinWidth(150);
- JComboBox javaTypesCombo = CayenneWidgetFactory.createComboBox(ModelerUtil
- .getRegisteredTypeNames(), false);
- AutoCompletion.enable(javaTypesCombo, false, true);
- typeColumn.setCellEditor(CayenneWidgetFactory.createCellEditor(javaTypesCombo));
-
TableColumn lockColumn = table.getColumnModel().getColumn(
ObjAttributeTableModel.LOCKING);
lockColumn.setMinWidth(100);
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties?rev=830111&r1=830110&r2=830111&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties Tue Oct 27 10:01:50 2009
@@ -140,7 +140,7 @@
cayenne.modeler.datamap.defaultprefs.schema.radio = Set/update schema for all DbEntities
cayenne.modeler.datamap.defaultprefs.schemanull.radio = Do not override existing non-empty schema
-cayenne.modeler.datamap.defaultprefs.package.radio = Set/update package for all ObjEntities (create default class names if missing)
+cayenne.modeler.datamap.defaultprefs.package.radio = Set/update package for all ObjEntities and Embeddables (create default class names if missing)
cayenne.modeler.datamap.defaultprefs.packagenull.radio = Do not override class names with packages
cayenne.modeler.datamap.defaultprefs.superclass.radio = Set/update superclass for all ObjEntities