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; } }