blob: 0a6a341beb58d6642b69835112adbbc0cbd41265 [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 org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.EntityGroup;
import org.eclipse.jst.jsf.common.metadata.Trait;
/**
* Helper class interface to merge source models into a single merged model.
* Not intended to be implemented by clients
*
*/
public interface IMetaDataModelMergeAssistant {
/**
* @return merged model
*/
public MetaDataModel getMergedModel();
/**
* Method that will first check to see if an entity with the same id exists in the merged model.
* If not, it will add it. The entities includeGroups are then also merged.
* @param entity
* @return the merged model entity
*
*/
public Entity addEntity(Entity entity);
/**
* Method will add an entity if not already existing in the merged model, and then check for an existing trait by id on the merged model's entity.
* @param entity
* @param trait
* @return flag indicating whether or not the traits was new and therefore added to the merged model's entity
*/
public boolean addTrait(Entity entity, Trait trait);
/**
* Method will add an entityGroup to the model if not already exiting in the merged model (by id).
* @param entityGroup
*/
public void addEntityGroup(EntityGroup entityGroup);
/**
* Signal that the merge is complete so that any post-processing may occur.
* This should be the last call made on the merge assistant and should be done before client calls for the merged model result.
* This should signal that entityGroups processing should begin.
*/
public void setMergeComplete();
/**
* @param mds - {@link IMetaDataSourceModelProvider}
*/
public void setSourceModelProvider(IMetaDataSourceModelProvider mds);
/**
* @return {@link IMetaDataSourceModelProvider} for current operation
*/
public IMetaDataSourceModelProvider getSourceModelProvider();
/**
* @param queryRoot
* @param entityKey - key relative to queryRoot
* @return entity - will return null if not found
*/
public Entity getMergedEntity(Entity queryRoot, String entityKey);
}