Repository: cayenne
Updated Branches:
  refs/heads/master fa7e3fac7 -> 67aad8a98


CAY-2420 Modeler: search is not performed for Stored Procedures


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/67aad8a9
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/67aad8a9
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/67aad8a9

Branch: refs/heads/master
Commit: 67aad8a98b112a1cb00274196261a3903a49a8a6
Parents: fa7e3fa
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Thu Apr 5 15:49:24 2018 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Thu Apr 5 15:49:24 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../cayenne/modeler/action/FindAction.java      | 41 ++++++++++++++++++++
 .../cayenne/modeler/dialog/FindDialog.java      |  7 +---
 .../cayenne/modeler/util/CellRenderers.java     |  1 -
 4 files changed, 43 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/67aad8a9/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 834ae21..3dfbdbc 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -47,6 +47,7 @@ CAY-2397 Modeler: Unable to set enum:value as Entity qualifier
 CAY-2401 Modeler: NPE in ObjEntity sync action
 CAY-2405 Broken prefetch of entity with inheritance and attribute with custom 
java type
 CAY-2411 Wrong resolution of ExtendedType with ValueObjectType for inherited 
class
+CAY-2420 Modeler: search is not performed for Stored Procedures
 
 ----------------------------------
 Release: 4.1.M1

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67aad8a9/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
index 94070f5..0da14eb 100755
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/FindAction.java
@@ -33,6 +33,8 @@ import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.Procedure;
+import org.apache.cayenne.map.ProcedureParameter;
 import org.apache.cayenne.map.ProcedureQueryDescriptor;
 import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.map.SQLTemplateDescriptor;
@@ -47,6 +49,8 @@ import org.apache.cayenne.modeler.event.AttributeDisplayEvent;
 import org.apache.cayenne.modeler.event.EmbeddableAttributeDisplayEvent;
 import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
 import org.apache.cayenne.modeler.event.EntityDisplayEvent;
+import org.apache.cayenne.modeler.event.ProcedureDisplayEvent;
+import org.apache.cayenne.modeler.event.ProcedureParameterDisplayEvent;
 import org.apache.cayenne.modeler.event.QueryDisplayEvent;
 import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
 import org.apache.cayenne.modeler.util.CayenneAction;
@@ -88,6 +92,8 @@ public class FindAction extends CayenneAction {
         PRIORITY_BY_TYPE.put(ProcedureQueryDescriptor.class,13);
         PRIORITY_BY_TYPE.put(Embeddable.class,              14);
         PRIORITY_BY_TYPE.put(EmbeddableAttribute.class,     15);
+        PRIORITY_BY_TYPE.put(Procedure.class,               16);
+        PRIORITY_BY_TYPE.put(ProcedureParameter.class,      17);
     }
 
     public static String getActionName() {
@@ -145,6 +151,10 @@ public class FindAction extends CayenneAction {
             
jumpToEmbeddableAttributeResult((EmbeddableAttribute)searchResultEntry.getObject(),
 editor, domain);
         } else if (searchResultEntry.getObject() instanceof Attribute || 
searchResultEntry.getObject() instanceof Relationship) {
             jumpToAttributeResult(searchResultEntry, editor, domain);
+        } else if (searchResultEntry.getObject() instanceof Procedure) {
+            jumpToProcedureResult((Procedure)searchResultEntry.getObject(), 
editor, domain);
+        } else if (searchResultEntry.getObject() instanceof 
ProcedureParameter) {
+            
jumpToProcedureResult((ProcedureParameter)searchResultEntry.getObject(), 
editor, domain);
         }
     }
 
@@ -156,6 +166,7 @@ public class FindAction extends CayenneAction {
             searchInEmbeddables(pattern, result, dataMap);
             searchInDbEntities(pattern, result, dataMap);
             searchInObjEntities(pattern, result, dataMap);
+            searchInProcedures(pattern, result, dataMap);
         }
         Collections.sort(result);
         return result;
@@ -221,6 +232,20 @@ public class FindAction extends CayenneAction {
         }
     }
 
+    private void searchInProcedures(Pattern pattern, List<SearchResultEntry> 
result, DataMap dataMap) {
+        for (Procedure proc : dataMap.getProcedures()) {
+            if (match(proc.getName(), pattern)) {
+                result.add(new SearchResultEntry(proc, proc.getName()));
+            }
+
+            for(ProcedureParameter param : proc.getCallParameters()) {
+                if(match(param.getName(), pattern)) {
+                    result.add(new SearchResultEntry(param, proc.getName() + 
'.' + param.getName()));
+                }
+            }
+        }
+    }
+
     private void checkCatalogOrSchema(Pattern pattern, List<SearchResultEntry> 
paths, DbEntity ent, String catalogOrSchema) {
         if (catalogOrSchema != null && !catalogOrSchema.isEmpty()) {
             if (match(catalogOrSchema, pattern)) {
@@ -307,6 +332,22 @@ public class FindAction extends CayenneAction {
         }
     }
 
+    private static void jumpToProcedureResult(Procedure procedure, EditorView 
editor, DataChannelDescriptor domain) {
+        DataMap map = procedure.getDataMap();
+        buildAndSelectTreePath(map, procedure, editor);
+        ProcedureDisplayEvent event = new 
ProcedureDisplayEvent(editor.getProjectTreeView(), procedure, map, domain);
+        editor.getProcedureView().currentProcedureChanged(event);
+    }
+
+    private static void jumpToProcedureResult(ProcedureParameter parameter, 
EditorView editor, DataChannelDescriptor domain) {
+        Procedure procedure = parameter.getProcedure();
+        DataMap map = procedure.getDataMap();
+        buildAndSelectTreePath(map, procedure, editor);
+        ProcedureParameterDisplayEvent event =
+                new 
ProcedureParameterDisplayEvent(editor.getProjectTreeView(), parameter, 
procedure, map, domain);
+        editor.getProcedureView().currentProcedureParameterChanged(event);
+    }
+
     /**
      * Builds a tree path for a given path and make selection in it
      */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67aad8a9/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/FindDialog.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/FindDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/FindDialog.java
index e0e30e7..d01d99c 100755
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/FindDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/FindDialog.java
@@ -65,12 +65,7 @@ public class FindDialog extends CayenneController {
     }
 
     protected void initBindings() {
-        view.getOkButton().addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                view.dispose();
-            }
-        });
+        view.getOkButton().addActionListener(e -> view.dispose());
 
         JTable table = view.getTable();
         table.setRowHeight(24);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67aad8a9/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
index 8a9e562..0ac0e41 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CellRenderers.java
@@ -49,7 +49,6 @@ import org.apache.cayenne.map.QueryDescriptor;
 import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.swing.components.image.FilteredIconFactory;
 import org.apache.cayenne.util.CayenneMapEntry;
 
 /**

Reply via email to