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/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java
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/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/GenericOrmIdMapping.java96
1 files changed, 96 insertions, 0 deletions
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())
+// );
+// }
+ }
}

Back to the top