Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Filion2012-10-08 20:35:32 +0000
committerPascal Filion2012-10-08 20:35:32 +0000
commit4adff1c260d4db364d5499a893a33f54bbbf6952 (patch)
tree58e96fdf00bee9e18925d3f187a449bf61c33f67 /jpa/plugins
parent28874221faf59c89f3c62b86b34ccf9249dcf6d1 (diff)
downloadwebtools.dali-4adff1c260d4db364d5499a893a33f54bbbf6952.tar.gz
webtools.dali-4adff1c260d4db364d5499a893a33f54bbbf6952.tar.xz
webtools.dali-4adff1c260d4db364d5499a893a33f54bbbf6952.zip
Made minor update to JPQL query hyperlink and turned on some code now that Hermes changes is available
Diffstat (limited to 'jpa/plugins')
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/GenericJpaJpqlHyperlinkBuilder.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlHyperlinkBuilder.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/OpenMemberDeclarationHyperlink.java24
3 files changed, 49 insertions, 46 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/GenericJpaJpqlHyperlinkBuilder.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/GenericJpaJpqlHyperlinkBuilder.java
index 187e9e28f0..1653b74228 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/GenericJpaJpqlHyperlinkBuilder.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/GenericJpaJpqlHyperlinkBuilder.java
@@ -18,6 +18,7 @@ import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.NamedQuery;
import org.eclipse.jpt.jpa.core.jpql.JpaJpqlQueryHelper;
import org.eclipse.persistence.jpa.jpql.Resolver;
+import org.eclipse.persistence.jpa.jpql.StateFieldResolver;
import org.eclipse.persistence.jpa.jpql.parser.AbstractPathExpression;
import org.eclipse.persistence.jpa.jpql.parser.AbstractSchemaName;
import org.eclipse.persistence.jpa.jpql.parser.AbstractTraverseParentVisitor;
@@ -28,6 +29,7 @@ import org.eclipse.persistence.jpa.jpql.parser.Expression;
import org.eclipse.persistence.jpa.jpql.parser.QueryPosition;
import org.eclipse.persistence.jpa.jpql.parser.RangeVariableDeclaration;
import org.eclipse.persistence.jpa.jpql.parser.StateFieldPathExpression;
+import org.eclipse.persistence.jpa.jpql.spi.IMapping;
import org.eclipse.persistence.jpa.jpql.spi.IType;
/**
@@ -270,33 +272,33 @@ public class GenericJpaJpqlHyperlinkBuilder extends JpaJpqlHyperlinkBuilder {
length++;
// Now traverse the path expression after the identification variable
-// for (int index = expression.hasVirtualIdentificationVariable() ? 0 : 1, count = expression.pathSize(); index < count; index++) {
+ for (int index = expression.hasVirtualIdentificationVariable() ? 0 : 1, count = expression.pathSize(); index < count; index++) {
// Retrieve the mapping for the path at the current position
-// String path = expression.getPath(index);
-// Resolver childResolver = resolver.getChild(path);
+ String path = expression.getPath(index);
+ Resolver childResolver = resolver.getChild(path);
-// if (childResolver == null) {
-// childResolver = new StateFieldResolver(resolver, path);
-// resolver.addChild(path, childResolver);
-// }
+ if (childResolver == null) {
+ childResolver = new StateFieldResolver(resolver, path);
+ resolver.addChild(path, childResolver);
+ }
-// IMapping mapping = childResolver.getMapping();
+ IMapping mapping = childResolver.getMapping();
// Invalid path expression
-// if (mapping == null) {
-// break;
-// }
+ if (mapping == null) {
+ break;
+ }
// The position is within the current path
-// if (position <= offset + length + path.length()) {
-// addFieldHyperlinks(expression, mapping, length);
-// break;
-// }
-
-// length += path.length() + 1 /* DOT */;
-// resolver = childResolver;
-// }
+ if (position <= offset + length + path.length()) {
+ addFieldHyperlinks(expression, mapping, length);
+ break;
+ }
+
+ length += path.length() + 1 /* DOT */;
+ resolver = childResolver;
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlHyperlinkBuilder.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlHyperlinkBuilder.java
index fdbe57aa2a..8c341d4e8d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlHyperlinkBuilder.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlHyperlinkBuilder.java
@@ -16,11 +16,13 @@ package org.eclipse.jpt.jpa.ui.internal.jpql;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.ISourceReference;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.NamedQuery;
+import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.jpql.JpaJpqlQueryHelper;
import org.eclipse.jpt.jpa.ui.internal.JptUiMessages;
import org.eclipse.persistence.jpa.jpql.ExpressionTools;
@@ -113,7 +115,7 @@ public abstract class JpaJpqlHyperlinkBuilder extends AbstractExpressionVisitor
// 'Open Declaration' opens the declaration of the persistent type
addOpenMemberDeclarationHyperlink(
parentType,
- memberName,
+ getJavaElement(parentType, memberName),
region,
JptUiMessages.JpaJpqlHyperlinkBuilder_OpenDeclaration
);
@@ -160,17 +162,17 @@ public abstract class JpaJpqlHyperlinkBuilder extends AbstractExpressionVisitor
/**
* Adds the given {@link IHyperlink}.
*
- * @param type
- * @param memberName
- * @param region
- * @param hyperlinkText
+ * @param type The {@link IType} to open if the hyperlink is chosen
+ * @param member The member, a child element of the type, to select
+ * @param region The {@link IRegion} represents the region to display the hyperlink within the JPQL query
+ * @param hyperlinkText The text of the {@link IHyperlink}
*/
protected final void addOpenMemberDeclarationHyperlink(IType type,
- String memberName,
+ ISourceReference member,
IRegion region,
String hyperlinkText) {
- addHyperlink(buildOpenMemberDeclarationHyperlink(type, memberName, region, hyperlinkText));
+ addHyperlink(buildOpenMemberDeclarationHyperlink(type, member, region, hyperlinkText));
}
/**
@@ -196,7 +198,7 @@ public abstract class JpaJpqlHyperlinkBuilder extends AbstractExpressionVisitor
protected final int adjustedPosition(Expression expression, int offset) {
int position = ExpressionTools.repositionCursor(
- expression.getRoot().toParsedText(),
+ expression.getRoot().toActualText(),
expression.getOffset(),
namedQuery.getQuery()
);
@@ -238,20 +240,20 @@ public abstract class JpaJpqlHyperlinkBuilder extends AbstractExpressionVisitor
* Creates a new {@link IHyperlink} that can open the editor on a member of the given {@link IType}.
*
* @param type The {@link IType} to open if the hyperlink is chosen
- * @param memberName The name of the member, a child element of the type, to select
+ * @param member The member, a child element of the type, to select
* @param region The {@link IRegion} represents the region to display the hyperlink within the JPQL query
* @param hyperlinkText The text of the {@link IHyperlink}
* @return A new {@link IHyperlink}
*/
protected final IHyperlink buildOpenMemberDeclarationHyperlink(IType type,
- String memberName,
+ ISourceReference member,
IRegion region,
String hyperlinkText) {
return new OpenMemberDeclarationHyperlink(
javaProject(),
type.getName(),
- memberName,
+ member,
region,
hyperlinkText
);
@@ -321,6 +323,13 @@ public abstract class JpaJpqlHyperlinkBuilder extends AbstractExpressionVisitor
return null;
}
+ protected final ISourceReference getJavaElement(IType parentType, String memberName) {
+
+ Entity entity = getEntity(parentType.getName());
+ JavaPersistentAttribute attribute = entity.getPersistentType().getAttributeNamed(memberName).getJavaPersistentAttribute();
+ return (ISourceReference) attribute.getJavaElement();
+ }
+
/**
* Returns the model object of the JPQL query being edited.
*
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/OpenMemberDeclarationHyperlink.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/OpenMemberDeclarationHyperlink.java
index 6e5439afe3..83eb365b98 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/OpenMemberDeclarationHyperlink.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/OpenMemberDeclarationHyperlink.java
@@ -16,6 +16,7 @@ package org.eclipse.jpt.jpa.ui.internal.jpql;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.ISourceRange;
+import org.eclipse.jdt.core.ISourceReference;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.text.IRegion;
@@ -31,25 +32,25 @@ import org.eclipse.ui.texteditor.ITextEditor;
*/
public class OpenMemberDeclarationHyperlink implements IHyperlink {
- private String typeName;
+ private String hyperlinkText;
private IJavaProject javaProject;
+ private ISourceReference member;
private IRegion region;
- private String hyperlinkText;
- private String memberName;
+ private String typeName;
/**
* Creates a new <code>OpenMemberDeclarationHyperlink</code>.
*/
public OpenMemberDeclarationHyperlink(IJavaProject javaProject,
String typeName,
- String memberName,
+ ISourceReference member,
IRegion region,
String hyperlinkText) {
super();
this.region = region;
this.typeName = typeName;
- this.memberName = memberName;
+ this.member = member;
this.javaProject = javaProject;
this.hyperlinkText = hyperlinkText;
}
@@ -89,18 +90,9 @@ public class OpenMemberDeclarationHyperlink implements IHyperlink {
// Open the editor
IEditorPart editorPart = JavaUI.openInEditor(javaElement, true, false);
- // Now select the class name
+ // Now select the member
if (editorPart instanceof ITextEditor) {
-
- for (IJavaElement child : type.getChildren()) {
- if (memberName.equals(child.getElementName())) {
- javaElement = child;
- break;
- }
- }
-
- // TODO
- ISourceRange range = type.getNameRange();
+ ISourceRange range = member.getNameRange();
((ITextEditor) editorPart).selectAndReveal(range.getOffset(), range.getLength());
}
}

Back to the top