Author: vyemialyanchyk
Date: 2009-04-30 11:33:37 -0400 (Thu, 30 Apr 2009)
New Revision: 14979
Modified:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/actions/CriteriaEditorAction.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4253 - for subitems of Session Factory -> open
Hibernate Criteria Editor with criteria
Modified:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/actions/CriteriaEditorAction.java
===================================================================
---
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/actions/CriteriaEditorAction.java 2009-04-30
14:20:16 UTC (rev 14978)
+++
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/actions/CriteriaEditorAction.java 2009-04-30
15:33:37 UTC (rev 14979)
@@ -21,10 +21,15 @@
*/
package org.hibernate.eclipse.console.actions;
+import javax.swing.tree.TreeNode;
+
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.osgi.util.NLS;
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.ImageConstants;
+import org.hibernate.console.node.BaseNode;
+import org.hibernate.console.node.PersistentCollectionNode;
+import org.hibernate.console.node.TypeNode;
import org.hibernate.eclipse.console.HibernateConsoleMessages;
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.eclipse.console.utils.EclipseImages;
@@ -49,7 +54,7 @@
protected String generateQuery(TreePath path) {
final String criteria = ".createCriteria({0})"; //$NON-NLS-1$
final String alias = "\n.createCriteria(\"{0}\",
\"{1}\")"; //$NON-NLS-1$
- final String projection = "\n.setProjection(
Property.forName(\"{0}\").as(\"{0}\"))"; //$NON-NLS-1$
+ final String projection =
"\n.setProjection(Property.forName(\"{0}\").as(\"{0}\"))";
//$NON-NLS-1$
final String sess = "session"; //$NON-NLS-1$
String enCriteria = ""; //$NON-NLS-1$
String propCriteria = ""; //$NON-NLS-1$
@@ -61,7 +66,7 @@
} else if (node instanceof Property){
Property prop = (Property)node;
String prName = prop.getName();
- PersistentClass pClass = ((Property)node).getPersistentClass();
+ PersistentClass pClass = prop.getPersistentClass();
if (pClass != null){
enName = pClass.getEntityName();
enName = enName.substring(enName.lastIndexOf('.') + 1);
@@ -87,8 +92,47 @@
}
}
}
+ } else if (node instanceof BaseNode) {
+ String prName = null;
+ TreeNode treeNodeParent = null;
+ if (node instanceof TypeNode) {
+ TypeNode typeNode = (TypeNode)node;
+ prName = typeNode.getName();
+ treeNodeParent = typeNode.getParent();
+ }
+ else if (node instanceof PersistentCollectionNode) {
+ PersistentCollectionNode persistentCollectionNode = (PersistentCollectionNode)node;
+ prName = persistentCollectionNode.getName();
+ treeNodeParent = persistentCollectionNode.getParent();
+ }
+ else {
+ BaseNode baseNode = (BaseNode)node;
+ enName = baseNode.getName();
+ enName = enName.substring(enName.lastIndexOf('.') + 1);
+ }
+ if (prName != null) {
+ if (treeNodeParent instanceof BaseNode) {
+ BaseNode baseNodeParent = (BaseNode)treeNodeParent;
+ if (baseNodeParent instanceof TypeNode) {
+ TypeNode typeNodeParent = (TypeNode)baseNodeParent;
+ enName = typeNodeParent.getType().getName();
+ }
+ else if (baseNodeParent instanceof PersistentCollectionNode) {
+ PersistentCollectionNode persistentCollectionNodeParent =
(PersistentCollectionNode)baseNodeParent;
+ enName = persistentCollectionNodeParent.getType().getName();
+ }
+ else {
+ enName = baseNodeParent.getName();
+ }
+ enName = enName.substring(enName.lastIndexOf('.') + 1);
+ propCriteria = NLS.bind(alias, prName, prName.charAt(0));
+ }
+ else {
+ return ""; //$NON-NLS-1$
+ }
+ }
} else {
- return ""; //$NON-NLS-1$
+ return ""; //$NON-NLS-1$
}
enCriteria = NLS.bind(criteria, enName + ".class"); //$NON-NLS-1$
return sess + enCriteria + propCriteria +
"\n.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)"; //$NON-NLS-1$