| /******************************************************************************* |
| * Copyright (c) 2009 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.context.java; |
| |
| import org.eclipse.jdt.core.dom.CompilationUnit; |
| import org.eclipse.jpt.core.context.JoiningStrategy; |
| import org.eclipse.jpt.core.context.java.JavaRelationshipMapping; |
| import org.eclipse.jpt.core.context.java.JavaRelationshipReference; |
| import org.eclipse.jpt.core.utility.TextRange; |
| |
| public abstract class AbstractJavaRelationshipReference |
| extends AbstractJavaJpaContextNode |
| implements JavaRelationshipReference |
| { |
| // cache the strategy for property change notification |
| protected JoiningStrategy cachedPredominantJoiningStrategy; |
| |
| |
| public AbstractJavaRelationshipReference(JavaRelationshipMapping parent) { |
| super(parent); |
| } |
| |
| |
| public JavaRelationshipMapping getRelationshipMapping() { |
| return (JavaRelationshipMapping) getParent(); |
| } |
| |
| |
| // **************** predominant joining strategy *************************** |
| |
| public JoiningStrategy getPredominantJoiningStrategy() { |
| return cachedPredominantJoiningStrategy; |
| } |
| |
| protected void setPredominantJoiningStrategy(JoiningStrategy newJoiningStrategy) { |
| JoiningStrategy oldJoiningStrategy = this.cachedPredominantJoiningStrategy; |
| this.cachedPredominantJoiningStrategy = newJoiningStrategy; |
| firePropertyChanged(PREDOMINANT_JOINING_STRATEGY_PROPERTY, oldJoiningStrategy, newJoiningStrategy); |
| } |
| |
| |
| // **************** resource -> context ************************************ |
| |
| public void initialize() { |
| initializeJoiningStrategies(); |
| this.cachedPredominantJoiningStrategy = calculatePredominantJoiningStrategy(); |
| } |
| |
| protected abstract void initializeJoiningStrategies(); |
| |
| public void update() { |
| updateJoiningStrategies(); |
| setPredominantJoiningStrategy(calculatePredominantJoiningStrategy()); |
| } |
| |
| protected abstract void updateJoiningStrategies(); |
| |
| protected abstract JoiningStrategy calculatePredominantJoiningStrategy(); |
| |
| |
| // **************** validation ********************************************* |
| |
| public TextRange getValidationTextRange(CompilationUnit astRoot) { |
| return getRelationshipMapping().getValidationTextRange(astRoot); |
| } |
| } |