/*
* 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.core.runtime.IPath;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.teiid.core.designer.ModelerCoreException;
import org.teiid.core.designer.util.CoreArgCheck;
import org.teiid.designer.core.util.ModelContents;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.core.workspace.ModelWorkspaceException;
import org.teiid.designer.metamodels.core.ModelAnnotation;
/**
* ModelResourceSelector
*
* @since 8.0
*/
public class ModelResourceSelector extends AbstractModelSelector {
private final ModelResource modelResource;
private ModelContents contents;
private String label;
private ModelHelper helper;
/**
* Construct an instance of ModelResourceSelector.
*/
public ModelResourceSelector(final ModelResource modelResource) {
super();
CoreArgCheck.isNotNull(modelResource);
this.modelResource = modelResource;
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#open()
*/
@Override
public void open() {
// don't do anything ...
}
@Override
public Resource getResource() throws ModelerCoreException {
return this.modelResource.getEmfResource();
}
/**
* @return The model to which the contents of this selector belong.
* @since 4.1
*/
public ModelResource getModelResource() {
return this.modelResource;
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#getRootObjects()
*/
@Override
public List getRootObjects() throws ModelerCoreException {
return this.getResource().getContents();
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#getUri()
*/
@Override
public URI getUri() {
final IPath path = this.modelResource.getPath();
final URI result = URI.createFileURI(path.toFile().getAbsolutePath());
return result;
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#close()
*/
@Override
public void close() {
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() throws ModelWorkspaceException {
return this.modelResource.getModelAnnotation();
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#getModelHelper()
*/
@Override
public ModelHelper getModelHelper() throws ModelWorkspaceException {
if (this.helper == null) {
this.helper = new ModelContentsModelHelper(getModelContents());
}
return this.helper;
}
/**
* @see org.teiid.designer.compare.selector.ModelSelector#getModelContents()
*/
@Override
public ModelContents getModelContents() throws ModelWorkspaceException {
if (this.contents == null) {
this.contents = ModelContents.getModelContents(this.modelResource);
}
return this.contents;
}
}