diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java new file mode 100644 index 0000000000..f6f9f78e32 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java @@ -0,0 +1,112 @@ +/******************************************************************************* + * 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 org.eclipse.jpt.core.context.BaseJoinColumn; +import org.eclipse.jpt.core.context.SecondaryTable; +import org.eclipse.jpt.core.internal.context.BaseJoinColumnTextRangeResolver; +import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages; +import org.eclipse.jpt.core.internal.validation.JpaValidationMessages; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; + +public class SecondaryTablePrimaryKeyJoinColumnValidator extends PrimaryKeyJoinColumnValidator +{ + private final SecondaryTable secondaryTable; + + public SecondaryTablePrimaryKeyJoinColumnValidator( + SecondaryTable secondaryTable, + BaseJoinColumn column, + BaseJoinColumn.Owner owner, + BaseJoinColumnTextRangeResolver textRangeResolver) { + super(column, owner, textRangeResolver); + this.secondaryTable = secondaryTable; + } + + protected boolean isSecondaryTableVirtual() { + return this.secondaryTable.isVirtual(); + } + + protected String getSecondaryTableName() { + return this.secondaryTable.getName(); + } + + @Override + public IMessage buildUnresolvedNameMessage() { + if (isSecondaryTableVirtual()) { + return this.buildVirtualSecondaryTableUnresolvedNameMessage(); + } + return super.buildUnresolvedNameMessage(); + } + + protected IMessage buildVirtualSecondaryTableUnresolvedNameMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.VIRTUAL_SECONDARY_TABLE_PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_NAME, + new String[] {this.getSecondaryTableName(), getColumn().getName(), getColumn().getDbTable().getName()}, + getColumn(), + getTextRangeResolver().getNameTextRange() + ); + } + + @Override + public IMessage buildUnresolvedReferencedColumnNameMessage() { + if (isSecondaryTableVirtual()) { + return this.buildVirtualSecondaryTableUnresolvedReferencedColumnNameMessage(); + } + return super.buildUnresolvedReferencedColumnNameMessage(); + } + + protected IMessage buildVirtualSecondaryTableUnresolvedReferencedColumnNameMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.VIRTUAL_SECONDARY_TABLE_PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_REFERENCED_COLUMN_NAME, + new String[] {this.getSecondaryTableName(), getColumn().getName(), getColumn().getDbTable().getName()}, + getColumn(), + getTextRangeResolver().getReferencedColumnNameTextRange() + ); + } + + @Override + public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage() { + if (this.isSecondaryTableVirtual()) { + return this.buildVirtualSecondaryTableUnspecifiedNameMultipleJoinColumnsMessage(); + } + return super.buildUnspecifiedNameMultipleJoinColumnsMessage(); + } + + protected IMessage buildVirtualSecondaryTableUnspecifiedNameMultipleJoinColumnsMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.VIRTUAL_SECONDARY_TABLE_PRIMARY_KEY_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS, + new String[] {this.getSecondaryTableName()}, + getColumn(), + getTextRangeResolver().getNameTextRange() + ); + } + + @Override + public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() { + if (this.isSecondaryTableVirtual()) { + return this.buildVirtualSecondaryTableUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(); + } + return super.buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(); + } + + protected IMessage buildVirtualSecondaryTableUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() { + return DefaultJpaValidationMessages.buildMessage( + IMessage.HIGH_SEVERITY, + JpaValidationMessages.VIRTUAL_SECONDARY_TABLE_PRIMARY_KEY_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS, + new String[] {this.getSecondaryTableName()}, + getColumn(), + getTextRangeResolver().getReferencedColumnNameTextRange() + ); + } +} |