/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.compare.selector; import java.util.List; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.resource.EmfResource; import org.teiid.designer.core.util.ModelContents; import org.teiid.designer.metamodels.core.ModelAnnotation; /** * ModelResourceSelector * * @since 8.0 */ public class EmfResourceSelector extends AbstractModelSelector { private final Resource resource; private String label; private ModelContents contents; private ModelHelper helper; /** * Construct an instance of ModelResourceSelector. */ public EmfResourceSelector( final Resource resource ) { super(); CoreArgCheck.isNotNull(resource); this.resource = resource; } /** * @see ModelSelector#open() */ @Override public void open() { if (this.resource instanceof EmfResource) { this.contents = ((EmfResource)this.resource).getModelContents(); } if (this.contents == null) { this.contents = new ModelContents(this.resource); } } /** * Return the resource of this selector */ @Override public Resource getResource() { return this.resource; } /** * @see org.teiid.designer.compare.selector.ModelSelector#getRootObjects() */ @Override public List getRootObjects() { return this.resource.getContents(); } /** * @see ModelSelector#getUri() */ @Override public URI getUri() { return resource.getURI(); } /** * @see ModelSelector#close() */ @Override public void close() { this.contents = null; this.helper = null; } /** * @see org.teiid.designer.compare.selector.ModelSelector#getLabel() */ @Override public String getLabel() { return this.label; } @Override public void setLabel( final String label ) { this.label = label; } /** * @see org.teiid.designer.compare.selector.ModelSelector#getModelAnnotation() */ @Override public ModelAnnotation getModelAnnotation() { return this.contents.getModelAnnotation(); } /** * @see org.teiid.designer.compare.selector.ModelSelector#getModelHelper() */ @Override public ModelHelper getModelHelper() { if (this.helper == null) { this.helper = new ModelContentsModelHelper(this.contents); } return this.helper; } /** * @see org.teiid.designer.compare.selector.ModelSelector#getModelContents() */ @Override public ModelContents getModelContents() { return this.contents; } }