blob: 740968842c809d9d322ecef1609c73c9b50db0ee [file] [log] [blame]
package org.eclipse.jst.jsf.designtime.internal.view.mapping;
import org.eclipse.core.resources.IProject;
import org.eclipse.jst.jsf.common.dom.TagIdentifier;
import org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.Trait;
import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataDomainContext;
import org.eclipse.jst.jsf.common.metadata.query.internal.IMetaDataQuery;
import org.eclipse.jst.jsf.common.metadata.query.internal.MetaDataQueryContextFactory;
import org.eclipse.jst.jsf.common.metadata.query.internal.MetaDataQueryFactory;
import org.eclipse.jst.jsf.designtime.internal.view.mapping.viewmapping.AttributeToPropertyMapping;
import org.eclipse.jst.jsf.designtime.internal.view.mapping.viewmapping.TagMapping;
/**
* Loader class for view metadata.
*
* @author cbateman
*
*/
public class ViewMetadataLoader
{
private final IProject _project;
private final IMetaDataQuery _query;
/**
* @param project
*/
public ViewMetadataLoader(final IProject project)
{
_project = project;
final IMetaDataDomainContext modelContext = MetaDataQueryContextFactory.getInstance().createTaglibDomainModelContext(_project);
_query = MetaDataQueryFactory.getInstance().createQuery(modelContext);
}
/**
* @param tagId
* @return the tag to view object mapping metadata for a tag in a particular
* metadata context or null if not found.
*/
public TagMapping getTagToViewMapping(final TagIdentifier tagId)
{
final Entity entity = _query.getQueryHelper().getEntity(tagId.getUri(), tagId.getTagName());
// final ITaglibDomainMetaDataModelContext modelContext = createMetadataContext(tagId
// .getUri());
// final Entity entity = TaglibDomainMetaDataQueryHelper.getEntity(
// modelContext, tagId.getTagName());
if (entity != null)
{
final Trait trait = _query.getQueryHelper().getTrait(
entity, ViewMetadataMapper.DEFAULT_MAPPING_TRAIT_ID);
if (trait != null)
{
return (TagMapping) trait.getValue();
}
}
return null;
}
/**
* @param tagId
* @param name
* @return the attribute mapping for name on tagId or null if known
*/
public AttributeToPropertyMapping getAttributeMapping(
final TagIdentifier tagId, final String name)
{
final Entity entity = _query.getQueryHelper().getEntity(
tagId.getUri(), tagId.getTagName()+"/"+name); //$NON-NLS-1$
if (entity != null)
{
final Trait trait = _query.getQueryHelper().getTrait(
entity, ViewMetadataMapper.DEFAULT_ATTRIBUTE_TRAIT_ID);
if (trait != null)
{
return (AttributeToPropertyMapping) trait.getValue();
}
}
return null;
}
}