You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2019/09/26 14:05:33 UTC

[cayenne] branch master updated (6a4c15a -> 854fb54)

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from 6a4c15a  Sort tables and columns in DBImport DB schema view
     new e2b49f4  Sort DbEntities in db relationship create dialog
     new 854fb54  typo

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modeler/action/CreateRelationshipAction.java   |  2 +-
 .../modeler/dialog/DbRelationshipDialog.java       | 70 +++++++++++++++++-----
 .../dialog/objentity/ObjRelationshipInfo.java      |  2 +-
 3 files changed, 58 insertions(+), 16 deletions(-)


[cayenne] 02/02: typo

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 854fb5432621a1cefd9ace2354e5e47689304f5c
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Thu Sep 26 17:00:33 2019 +0300

    typo
---
 .../org/apache/cayenne/modeler/action/CreateRelationshipAction.java     | 2 +-
 .../java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java    | 2 +-
 .../apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
index 48a3bca..8b84977 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
@@ -101,7 +101,7 @@ public class CreateRelationshipAction extends CayenneAction {
             if (dbEnt != null) {
 
                 new DbRelationshipDialog(getProjectController())
-                        .createNewRaltionship(dbEnt)
+                        .createNewRelationship(dbEnt)
                         .startUp();
             }
         }
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
index e538278..c8d57ea 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
@@ -85,7 +85,7 @@ public class DbRelationshipDialog extends CayenneController {
         return view;
     }
 
-    public DbRelationshipDialog createNewRaltionship(DbEntity dbEntity) {
+    public DbRelationshipDialog createNewRelationship(DbEntity dbEntity) {
         isCreate = true;
 
         DbRelationship rel = new DbRelationship();
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index ccb51fa..d936ed6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -323,7 +323,7 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
         DbEntity dbEntity = relationship.getSourceEntity().getDbEntity();
 
         DbRelationshipDialog dbRelationshipDialog = new DbRelationshipDialog(mediator)
-                .createNewRaltionship(dbEntity);
+                .createNewRelationship(dbEntity);
 
         dbRelationshipDialog.startUp();
 


[cayenne] 01/02: Sort DbEntities in db relationship create dialog

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit e2b49f4dd81986db1ce3034d4a1f77fced361d9d
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Thu Sep 26 16:59:56 2019 +0300

    Sort DbEntities in db relationship create dialog
---
 .../modeler/dialog/DbRelationshipDialog.java       | 68 +++++++++++++++++-----
 1 file changed, 55 insertions(+), 13 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
index 2cf0919..e538278 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbRelationshipDialog.java
@@ -19,7 +19,8 @@
 
 package org.apache.cayenne.modeler.dialog;
 
-import javax.swing.DefaultComboBoxModel;
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
 import javax.swing.JComboBox;
 import javax.swing.JOptionPane;
 import javax.swing.table.TableColumn;
@@ -29,8 +30,10 @@ import java.awt.event.WindowEvent;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Function;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
@@ -57,6 +60,10 @@ import org.apache.cayenne.util.Util;
  */
 public class DbRelationshipDialog extends CayenneController {
 
+    private static final Comparator<DbEntity> DB_ENTITY_COMPARATOR =
+            Comparator.comparing((Function<DbEntity, String>) ent -> ent.getDataMap().getName())
+                    .thenComparing(DbEntity::getName);
+
     private DbRelationship relationship;
     private DbRelationship reverseRelationship;
 
@@ -113,8 +120,8 @@ public class DbRelationshipDialog extends CayenneController {
     }
 
     private void initFromModel() {
-        TargetComboBoxModel targetComboBoxModel = new TargetComboBoxModel(relationship
-                .getSourceEntity().getDataMap().getDbEntities());
+        TargetComboBoxModel targetComboBoxModel =
+                new TargetComboBoxModel(projectController.getEntityResolver().getDbEntities());
         view.getTargetEntities().setModel(targetComboBoxModel);
 
         view.getSourceName().setText(relationship.getSourceEntityName());
@@ -140,14 +147,14 @@ public class DbRelationshipDialog extends CayenneController {
 
     private void initController() {
         view.getTargetEntities().addActionListener(action -> {
-            String selectedItem = (String)view.getTargetEntities().getSelectedItem();
+            DbEntity selectedItem = ((TargetComboBoxModel)view.getTargetEntities().getModel()).selected;
             if(relationship.getTargetEntityName() == null) {
-                relationship.setTargetEntityName(selectedItem);
-            } else if(!relationship.getTargetEntityName().equals(selectedItem)){
+                relationship.setTargetEntityName(selectedItem.getName());
+            } else if(!relationship.getTargetEntityName().equals(selectedItem.getName())){
                 if (WarningDialogByDbTargetChange.showWarningDialog(projectController, relationship)) {
                     // clear joins...
                     relationship.removeAllJoins();
-                    relationship.setTargetEntityName(selectedItem);
+                    relationship.setTargetEntityName(selectedItem.getName());
                 } else {
                     view.getTargetEntities().setSelectedItem(relationship.getTargetEntityName());
                 }
@@ -401,17 +408,52 @@ public class DbRelationshipDialog extends CayenneController {
         return view.isCancelPressed() ? Optional.empty() : Optional.of(relationship);
     }
 
-    final class TargetComboBoxModel extends DefaultComboBoxModel<String> {
+    final class TargetComboBoxModel extends AbstractListModel<String> implements ComboBoxModel<String> {
+
+        private List<DbEntity> entities;
+        private DbEntity selected;
 
         TargetComboBoxModel(Collection<DbEntity> dbEntities) {
             super();
-            dbEntities.forEach(dbEntity -> this.addElement(dbEntity.getName()));
-            if(relationship.getTargetEntity() == null) {
-                this.setSelectedItem(null);
-            } else {
-                this.setSelectedItem(relationship.getTargetEntity().getName());
+            this.entities = new ArrayList<>(dbEntities);
+            this.entities.sort(DB_ENTITY_COMPARATOR);
+            selected = relationship.getTargetEntity();
+        }
+
+        private String getTitle(DbEntity entity) {
+            if(entity == null) {
+                return "";
+            }
+            return relationship.getSourceEntity().getDataMap() == entity.getDataMap()
+                    ? entity.getName()
+                    : entity.getName() + " (" + entity.getDataMap().getName() + ')';
+        }
+
+        @Override
+        public int getSize() {
+            return entities.size();
+        }
+
+        @Override
+        public String getElementAt(int index) {
+            return getTitle(entities.get(index));
+        }
+
+        @Override
+        public void setSelectedItem(Object anItem) {
+            String title = (String)anItem;
+            if(title != null) {
+                int spacer = title.indexOf(' ');
+                if (spacer != -1) {
+                    title = title.substring(0, spacer);
+                }
             }
+            selected = projectController.getEntityResolver().getDbEntity(title);
         }
 
+        @Override
+        public Object getSelectedItem() {
+            return getTitle(selected);
+        }
     }
 }