Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java58
1 files changed, 55 insertions, 3 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java
index 4e3d0ef47c..b6294c4793 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedNativeQuery.java
@@ -9,14 +9,19 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
+import java.util.Collections;
import java.util.List;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.ObjectTools;
+import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.jpa.core.context.JpaContextNode;
import org.eclipse.jpt.jpa.core.context.NamedNativeQuery;
import org.eclipse.jpt.jpa.core.context.Query;
import org.eclipse.jpt.jpa.core.context.java.JavaNamedNativeQuery;
import org.eclipse.jpt.jpa.core.context.orm.OrmNamedNativeQuery;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmQuery;
+import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
+import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.jpt.jpa.core.jpql.JpaJpqlQueryHelper;
import org.eclipse.jpt.jpa.core.resource.orm.XmlNamedNativeQuery;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -29,6 +34,9 @@ public class GenericOrmNamedNativeQuery
extends AbstractOrmQuery<XmlNamedNativeQuery>
implements OrmNamedNativeQuery
{
+
+ protected String query;
+
protected String resultClass;
protected String fullyQualifiedResultClass;
@@ -37,6 +45,7 @@ public class GenericOrmNamedNativeQuery
public GenericOrmNamedNativeQuery(JpaContextNode parent, XmlNamedNativeQuery xmlNamedNativeQuery) {
super(parent, xmlNamedNativeQuery);
+ this.query = this.xmlQuery.getQuery();
this.resultClass = xmlNamedNativeQuery.getResultClass();
this.resultSetMapping = xmlNamedNativeQuery.getResultSetMapping();
}
@@ -47,9 +56,11 @@ public class GenericOrmNamedNativeQuery
@Override
public void synchronizeWithResourceModel() {
super.synchronizeWithResourceModel();
+ this.setQuery_(this.xmlQuery.getQuery());
this.setResultClass_(this.xmlQuery.getResultClass());
this.setResultSetMapping_(this.xmlQuery.getResultSetMapping());
}
+
@Override
public void update() {
super.update();
@@ -57,6 +68,24 @@ public class GenericOrmNamedNativeQuery
}
+ // ********** query **********
+
+ public String getQuery() {
+ return this.query;
+ }
+
+ public void setQuery(String query) {
+ this.setQuery_(query);
+ this.xmlQuery.setQuery(query);
+ }
+
+ protected void setQuery_(String query) {
+ String old = this.query;
+ this.query = query;
+ this.firePropertyChanged(QUERY_PROPERTY, old, query);
+ }
+
+
// ********** result class **********
public String getResultClass() {
@@ -110,19 +139,41 @@ public class GenericOrmNamedNativeQuery
this.firePropertyChanged(RESULT_SET_MAPPING_PROPERTY, old, resultSetMapping);
}
+
// ********** metadata conversion **********
public void convertFrom(JavaNamedNativeQuery javaQuery) {
super.convertFrom(javaQuery);
+ this.setQuery(javaQuery.getQuery());
this.setResultClass(javaQuery.getResultClass());
this.setResultSetMapping(javaQuery.getResultSetMapping());
}
+
// ********** validation **********
@Override
- protected void validateQuery_(JpaJpqlQueryHelper queryHelper, List<IMessage> messages, IReporter reporter) {
- // nothing yet
+ public void validate(JpaJpqlQueryHelper queryHelper, List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.validateQuery(queryHelper, messages, reporter);
+ }
+
+ protected void validateQuery(@SuppressWarnings("unused") JpaJpqlQueryHelper queryHelper, List<IMessage> messages, IReporter reporter) {
+ if (StringTools.isBlank(this.query)){
+ messages.add(
+ DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ JpaValidationMessages.QUERY_STATEMENT_UNDEFINED,
+ new String[] {this.name},
+ this,
+ this.getNameTextRange()
+ )
+ );
+ }
+ }
+
+ public List<TextRange> getQueryTextRanges() {
+ return Collections.singletonList(this.xmlQuery.getQueryTextRange());
}
@Override
@@ -132,7 +183,8 @@ public class GenericOrmNamedNativeQuery
}
protected boolean isEquivalentTo(NamedNativeQuery other) {
- return ObjectTools.equals(this.resultClass, other.getResultClass()) &&
+ return ObjectTools.equals(this.query, other.getQuery()) &&
+ ObjectTools.equals(this.resultClass, other.getResultClass()) &&
ObjectTools.equals(this.resultSetMapping, other.getResultSetMapping());
}

Back to the top