| /******************************************************************************* |
| * Copyright (c) 2006, 2007 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.content.orm.resource; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator; |
| import org.eclipse.wst.common.internal.emf.resource.Translator; |
| |
| public abstract class MultiObjectDependencyTranslator extends DependencyTranslator |
| { |
| private static final Translator[] EMPTY_TRANSLATORS = new Translator[]{}; |
| |
| |
| private Map<EObject, Translator> translatorMap; |
| |
| public MultiObjectDependencyTranslator(String domNameAndPath, EStructuralFeature aFeature, EStructuralFeature aDependentFeature) { |
| super(domNameAndPath, aFeature, aDependentFeature); |
| this.translatorMap = new HashMap<EObject, Translator>(); |
| } |
| |
| |
| public Translator getDelegateFor(EObject o) { |
| return translatorMap.get(o); |
| } |
| |
| public abstract Translator getDelegateFor(String domName, String readAheadName); |
| |
| public EObject createEMFObject(String nodeName, String readAheadName) { |
| Translator translator = getDelegateFor(nodeName, readAheadName); |
| EObject eObject = translator.createEMFObject(nodeName, readAheadName); |
| this.translatorMap.put(eObject, translator); |
| return eObject; |
| } |
| |
| public Translator[] getChildren(Object o, int version) { |
| if (o == null) { |
| return EMPTY_TRANSLATORS; |
| } |
| Translator[] children = getDelegateFor((EObject) o).getChildren(o, version); |
| if (children == null) { |
| return EMPTY_TRANSLATORS; |
| } |
| return children; |
| } |
| |
| public String getDOMName(Object value) { |
| return getDelegateFor((EObject) value).getDOMName(value); |
| } |
| |
| public boolean isManagedByParent() { |
| return false; |
| } |
| } |