Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java154
1 files changed, 154 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java
new file mode 100644
index 0000000000..5865a35b00
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/AbstractOverrideValidator.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Oracle.
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.jpa1.context;
+
+import java.util.List;
+import org.eclipse.jpt.core.context.BaseOverride;
+import org.eclipse.jpt.core.context.PersistentAttribute;
+import org.eclipse.jpt.core.internal.context.JptValidator;
+import org.eclipse.jpt.core.internal.context.OverrideTextRangeResolver;
+import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+
+public abstract class AbstractOverrideValidator
+ implements JptValidator
+{
+
+ protected final PersistentAttribute persistentAttribute;
+
+ protected final BaseOverride override;
+
+ protected final BaseOverride.Owner owner;
+
+ protected final OverrideTextRangeResolver textRangeResolver;
+
+ protected final OverrideDescriptionProvider overrideDescriptionProvider;
+
+ protected AbstractOverrideValidator(
+ BaseOverride override,
+ BaseOverride.Owner owner,
+ OverrideTextRangeResolver textRangeResolver,
+ OverrideDescriptionProvider overrideDescriptionProvider) {
+ this(null, override, owner, textRangeResolver, overrideDescriptionProvider);
+ }
+
+
+ protected AbstractOverrideValidator(
+ PersistentAttribute persistentAttribute,
+ BaseOverride override,
+ BaseOverride.Owner owner,
+ OverrideTextRangeResolver textRangeResolver,
+ OverrideDescriptionProvider overrideDescriptionProvider) {
+ this.persistentAttribute = persistentAttribute;
+ this.override = override;
+ this.owner = owner;
+ this.textRangeResolver = textRangeResolver;
+ this.overrideDescriptionProvider = overrideDescriptionProvider;
+ }
+
+ protected BaseOverride getOverride() {
+ return this.override;
+ }
+
+ protected BaseOverride.Owner getOwner() {
+ return this.owner;
+ }
+
+ protected OverrideTextRangeResolver getTextRangeResolver() {
+ return this.textRangeResolver;
+ }
+
+ protected boolean isPersistentAttributeVirtual() {
+ return this.persistentAttribute != null && this.persistentAttribute.isVirtual();
+ }
+
+ protected String getPersistentAttributeName() {
+ return this.persistentAttribute.getName();
+ }
+
+ protected String getOverrideDescriptionMessage() {
+ return this.overrideDescriptionProvider.getOverrideDescriptionMessage();
+ }
+
+ public boolean validate(List<IMessage> messages, IReporter reporter) {
+ return this.validateName(messages);
+ }
+
+ protected boolean validateName(List<IMessage> messages) {
+ if (!CollectionTools.contains(this.getOwner().allOverridableAttributeNames(), this.getOverride().getName())) {
+ messages.add(this.buildUnresolvedNameMessage());
+ return false;
+ }
+ return true;
+ }
+
+ protected IMessage buildUnresolvedNameMessage() {
+ if (this.override.isVirtual()) {
+ return this.buildVirtualUnresolvedNameMessage();
+ }
+ if (isPersistentAttributeVirtual()) {
+ return this.buildVirtualAttributeUnresolvedNameMessage();
+ }
+ return this.buildUnresolvedNameMessage(this.getUnresolvedNameMessage());
+ }
+
+ protected IMessage buildVirtualUnresolvedNameMessage() {
+ return DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ getVirtualOverrideUnresolvedNameMessage(),
+ new String[] {
+ this.getOverride().getName(),
+ this.getOverrideDescriptionMessage(),
+ this.getOwner().getOverridableTypeMapping().getName()},
+ this.getOverride(),
+ this.textRangeResolver.getNameTextRange()
+ );
+ }
+
+ protected abstract String getVirtualOverrideUnresolvedNameMessage();
+
+ protected IMessage buildUnresolvedNameMessage(String message) {
+ return DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ message,
+ new String[] {
+ this.getOverride().getName(),
+ this.getOverrideDescriptionMessage(),
+ this.getOwner().getOverridableTypeMapping().getName()},
+ this.getOverride(),
+ this.textRangeResolver.getNameTextRange());
+ }
+
+ protected abstract String getUnresolvedNameMessage();
+
+ protected IMessage buildVirtualAttributeUnresolvedNameMessage() {
+ return DefaultJpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ getVirtualAttributeUnresolvedNameMessage(),
+ new String[] {
+ this.getPersistentAttributeName(),
+ this.getOverride().getName(),
+ this.getOverrideDescriptionMessage(),
+ this.getOwner().getOverridableTypeMapping().getName()},
+ this.getOverride(),
+ this.textRangeResolver.getNameTextRange());
+ }
+
+ protected abstract String getVirtualAttributeUnresolvedNameMessage();
+
+
+ public static interface OverrideDescriptionProvider {
+ String getOverrideDescriptionMessage();
+ }
+
+}

Back to the top