/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.hibernate.jpt.core.internal.context.java;
import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingJoinColumnRelationship;
import org.eclipse.jpt.jpa.core.internal.context.java.GenericJavaMappingJoinColumnRelationshipStrategy;
/**
* @author Dmitry Geraskov
*
*/
public class HibernateJavaJoinColumnJoiningStrategy extends
GenericJavaMappingJoinColumnRelationshipStrategy {
public HibernateJavaJoinColumnJoiningStrategy(
JavaMappingJoinColumnRelationship parent) {
super(parent);
}
@Override
protected JoinColumn.ParentAdapter buildJoinColumnParentAdapter() {
return new HibernateJoinColumnOwner();
}
/*protected void validateJoinColumnName(JavaJoinColumn joinColumn, List<IMessage> messages, CompilationUnit astRoot) {
if ( ! joinColumn.isResolved() && joinColumn.getDbTable() != null) {
if (((HibernateJoinColumn)joinColumn).getDBColumnName() != null) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
new String[] {((HibernateJoinColumn)joinColumn).getDBColumnName()},
joinColumn,
joinColumn.getNameTextRange(astRoot)
)
);
}
else if (joinColumn.getOwner().joinColumnsSize() > 1) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
JpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS,
joinColumn,
joinColumn.getNameTextRange(astRoot)
)
);
}
//If the name is null and there is only one join-column, one of these validation messages will apply
// 1. target entity does not have a primary key
// 2. target entity is not specified
// 3. target entity is not an entity
}
}
protected void validationJoinColumnReferencedColumnName(JavaJoinColumn joinColumn, List<IMessage> messages, CompilationUnit astRoot) {
if ( ! joinColumn.isReferencedColumnResolved() && joinColumn.getReferencedColumnDbTable() != null) {
if (((HibernateJoinColumn)joinColumn).getReferencedDBColumnName() != null) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
new String[] {((HibernateJoinColumn)joinColumn).getReferencedDBColumnName(), ((HibernateJavaJoinColumn)joinColumn).getDBColumnName()},
joinColumn,
joinColumn.getReferencedColumnNameTextRange(astRoot)
)
);
}
else if (joinColumn.getOwner().joinColumnsSize() > 1) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
JpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME_MULTIPLE_JOIN_COLUMNS,
joinColumn,
joinColumn.getReferencedColumnNameTextRange(astRoot)
)
);
}
//If the referenced column name is null and there is only one join-column, one of these validation messages will apply
// 1. target entity does not have a primary key
// 2. target entity is not specified
// 3. target entity is not an entity
}
}*/
protected class HibernateJoinColumnOwner extends JoinColumnParentAdapter {
protected HibernateJoinColumnOwner() {
super();
}
//TODO implement validator messages
}
}