blob: 92ae6916c7001493e7253389ff23149d6176547d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Oracle Corporation.
* 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.jst.jsf.common.metadata.internal;
import java.util.Iterator;
import org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.EntityGroup;
import org.eclipse.jst.jsf.common.metadata.Model;
import org.eclipse.jst.jsf.common.metadata.Trait;
import org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataFileRegistry.StandardMetaDataFilesProvider;
/**
* A 'null' translation of a metadata file. Entities and traits are not transformed.
*
*/
public class StandardMetaDataFilesTranslator implements IMetaDataTranslator {
public boolean canTranslate(IMetaDataSourceModelProvider modelProvider) {
if (modelProvider instanceof StandardMetaDataFilesProvider)
return true;
return false;
}
public void translate(IMetaDataModelMergeAssistant assistant) {//TODO: throw proper errors
//null translate - sourceModel object are already Entities and traits
//traverse the tree and add to model
//temp - throw proper errors
//assert assistant.getSourceModel() instanceof ModelKeyDescriptor;
MetaDataModel mm = assistant.getMergedModel();
if (mm.getRoot() == null)
mm.setRoot(assistant.getSourceModelProvider().getSourceModel());
else {
//for each entity and trait call "add". assistant will handle merge.
Model mk = (Model)assistant.getSourceModelProvider().getSourceModel();
if (mk != null)//possible that model was not loaded
traverseAndAdd(assistant, mk);
}
}
/**
* Add entity and any children
* @param assistant
* @param entity
*/
protected void traverseAndAdd(IMetaDataModelMergeAssistant assistant, final Entity entity){
assistant.addEntity(entity);
if (entity instanceof Model){
Model model = (Model)entity;
for (final Iterator/*EntityGroup*/ it=model.getEntityGroups().iterator();it.hasNext();){
assistant.addEntityGroup((EntityGroup)it.next());
}
}
for (final Iterator/*<Trait>*/ it=entity.getTraits().iterator();it.hasNext();){
Trait trait = (Trait)it.next();
assistant.addTrait(entity, trait);
}
for (final Iterator/*<EntityKey>*/ it=entity.getChildEntities().iterator();it.hasNext();){
Entity e = (Entity)it.next();
traverseAndAdd(assistant, e);
}
}
}