Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2008-03-06 16:37:13 +0000
committerkmoore2008-03-06 16:37:13 +0000
commita5ea823419be066e730686b5326c2f5eb6411523 (patch)
tree1f6e8fc76948542d8f5c98e84a3a4194fd5b4044 /jpa/plugins/org.eclipse.jpt.core
parent5b9da5f98519e01c40a9876627389b0dad85c153 (diff)
downloadwebtools.dali-a5ea823419be066e730686b5326c2f5eb6411523.tar.gz
webtools.dali-a5ea823419be066e730686b5326c2f5eb6411523.tar.xz
webtools.dali-a5ea823419be066e730686b5326c2f5eb6411523.zip
orm.xml id mapping validation, generator validation not complete, need the generator repository
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmGeneratedValue.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java96
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValue.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValueImpl.java8
7 files changed, 124 insertions, 14 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmGeneratedValue.java
index e8a730fc9c..6980a31342 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmGeneratedValue.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/context/orm/OrmGeneratedValue.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.core.context.orm;
+import org.eclipse.jpt.core.TextRange;
import org.eclipse.jpt.core.context.GeneratedValue;
import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue;
@@ -23,6 +24,11 @@ import org.eclipse.jpt.core.resource.orm.XmlGeneratedValue;
*/
public interface OrmGeneratedValue extends GeneratedValue, OrmJpaContextNode
{
+ /**
+ * Return the (best guess) text location of the generator.
+ */
+ TextRange generatorTextRange();
+
void initialize(XmlGeneratedValue generatedValue);
void update(XmlGeneratedValue generatedValue);
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java
index 957b775f71..4b3372ee2b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/GenericJavaGeneratedValue.java
@@ -89,7 +89,7 @@ public class GenericJavaGeneratedValue extends AbstractJavaJpaContextNode implem
}
public TextRange validationTextRange(CompilationUnit astRoot) {
- return null;//TODO //this.member.annotationTextRange(DECLARATION_ANNOTATION_ADAPTER);
+ return this.generatedValueResource.textRange(astRoot);
}
public TextRange generatorTextRange(CompilationUnit astRoot) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java
index ae316c0230..7e30414239 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmGeneratedValue.java
@@ -87,16 +87,9 @@ public class GenericOrmGeneratedValue extends AbstractOrmJpaContextNode implemen
}
public TextRange generatorTextRange() {
- // TODO Auto-generated method stub
- return null;
- }
-// public ITextRange generatorTextRange() {
-// if (node == null) {
-// return ((XmlEObject) eContainer()).validationTextRange();
-// }
-// IDOMNode nameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.GENERATED_VALUE__GENERATOR);
-// return (nameNode == null) ? validationTextRange() : buildTextRange(nameNode);
-// }
+ return this.generatedValue.generatorTextRange();
+ }
+
// ********** resource model -> java context model **********
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java
index abda6460d4..589fa3ef53 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java
@@ -9,9 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.core.internal.context.orm;
+import java.util.List;
import org.eclipse.jpt.core.MappingKeys;
import org.eclipse.jpt.core.context.ColumnMapping;
import org.eclipse.jpt.core.context.TemporalType;
+import org.eclipse.jpt.core.context.TypeMapping;
import org.eclipse.jpt.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.core.context.orm.OrmColumn;
import org.eclipse.jpt.core.context.orm.OrmColumnMapping;
@@ -20,6 +22,8 @@ import org.eclipse.jpt.core.context.orm.OrmIdMapping;
import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute;
import org.eclipse.jpt.core.context.orm.OrmSequenceGenerator;
import org.eclipse.jpt.core.context.orm.OrmTableGenerator;
+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
import org.eclipse.jpt.core.resource.orm.AbstractXmlTypeMapping;
import org.eclipse.jpt.core.resource.orm.OrmFactory;
import org.eclipse.jpt.core.resource.orm.XmlColumn;
@@ -28,6 +32,7 @@ import org.eclipse.jpt.core.resource.orm.XmlId;
import org.eclipse.jpt.core.resource.orm.XmlSequenceGenerator;
import org.eclipse.jpt.core.resource.orm.XmlTableGenerator;
import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class GenericOrmIdMapping extends AbstractOrmAttributeMapping<XmlId>
@@ -344,4 +349,95 @@ public class GenericOrmIdMapping extends AbstractOrmAttributeMapping<XmlId>
public void removeColumnResource() {
this.attributeMapping().setColumn(null);
}
+
+ // ****************** validation ****************
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ if (entityOwned()) {
+ addColumnMessages(messages);
+ }
+ addGeneratorMessages(messages);
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ TypeMapping typeMapping = typeMapping();
+ OrmColumn column = getColumn();
+ String table = column.getTable();
+ boolean doContinue = isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (persistentAttribute().isVirtual()) {
+ messages.add(
+ DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE,
+ new String[] {persistentAttribute().getName(), table, column.getName()},
+ column,
+ column.tableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ JpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column,
+ column.tableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ if (persistentAttribute().isVirtual()) {
+ messages.add(
+ DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME,
+ new String[] {persistentAttribute().getName(), column.getName()},
+ column,
+ column.nameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ JpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column,
+ column.nameTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addGeneratorMessages(List<IMessage> messages) {
+ OrmGeneratedValue generatedValue = getGeneratedValue();
+ if (generatedValue == null) {
+ return;
+ }
+ String generatorName = generatedValue.getGenerator();
+ if (generatorName == null) {
+ return;
+ }
+ //TODO generator validation
+// IGeneratorRepository generatorRepository = getPersistenceUnitContext().getGeneratorRepository();
+// IGenerator generator = generatorRepository.generator(generatorName);
+//
+// if (generator == null) {
+// messages.add(
+// JpaValidationMessages.buildMessage(
+// IMessage.HIGH_SEVERITY,
+// IJpaValidationMessages.GENERATED_VALUE_UNRESOLVED_GENERATOR,
+// new String[] {generatorName},
+// generatedValue,
+// generatedValue.generatorTextRange())
+// );
+// }
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java
index df2fd65e5a..7b1fb94d3b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlGeneratedValue.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.core.internal.context.orm;
+import org.eclipse.jpt.core.TextRange;
import org.eclipse.jpt.core.context.java.JavaGeneratedValue;
import org.eclipse.jpt.core.resource.common.AbstractJpaEObject;
import org.eclipse.jpt.core.resource.orm.GenerationType;
@@ -50,11 +51,11 @@ public class VirtualXmlGeneratedValue extends AbstractJpaEObject implements XmlG
throw new UnsupportedOperationException("cannot set values on a virtual mapping");
}
-
+ public TextRange generatorTextRange() {
+ return null;
+ }
public void update(JavaGeneratedValue javaGeneratedValue) {
this.javaGeneratedValue = javaGeneratedValue;
}
-
-
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValue.java
index 69761ac340..8113671cab 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValue.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValue.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.core.resource.orm;
+import org.eclipse.jpt.core.TextRange;
import org.eclipse.jpt.core.resource.common.JpaEObject;
/**
@@ -93,4 +94,9 @@ public interface XmlGeneratedValue extends JpaEObject
*/
void setStrategy(GenerationType value);
+ /**
+ * Return the {@link TextRange} for the generator attibute. If the generator attibute
+ * does not exist return the {@link TextRange} for the generated-value element.
+ */
+ TextRange generatorTextRange();
} // GeneratedValue
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValueImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValueImpl.java
index e4c9eb1bbc..5d1e07d773 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValueImpl.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/orm/XmlGeneratedValueImpl.java
@@ -12,7 +12,11 @@ package org.eclipse.jpt.core.resource.orm;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.TextRange;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.resource.orm.translators.OrmXmlMapper;
import org.eclipse.jpt.core.resource.common.AbstractJpaEObject;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
/**
* <!-- begin-user-doc -->
@@ -258,4 +262,8 @@ public class XmlGeneratedValueImpl extends AbstractJpaEObject implements XmlGene
return result.toString();
}
+ public TextRange generatorTextRange() {
+ IDOMNode generatorNode = (IDOMNode) DOMUtilities.getChildAttributeNode(this.node, OrmXmlMapper.GENERATOR);
+ return (generatorNode == null) ? validationTextRange() : buildTextRange(generatorNode);
+ }
} // GeneratedValue

Back to the top