/*
* 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.core.workspace;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.teiid.designer.core.ModelerCore;
/**
* A ModelProject encapsulates an {@link org.eclipse.core.resources.IProject Eclipse project}
* that has the {@link ModelerCore#NATURE_ID org.teiid.designer.core.modelNature}
* nature.
* <p>
* Model project items need to be opened before they can be navigated or manipulated.
* The children are of type {@link ModelFolder} and {@link ModelResource}.
* The children are listed in no particular order.
* </p>
* <p>
* This interface is not intended to be implemented by clients.
* </p>
*
* @since 8.0
*/
public interface ModelProject extends ModelWorkspaceItem, Openable {
/**
* Return the {@link IProject Eclipse project} that this object
* represents and upon which this item was created.
* @return the Eclipse project
*/
IProject getProject();
/**
* Return the {@link ModelWorkspaceItem model workspace item} for the specified resource and
* contained by this project. The ModelProject does not have to directly contain the corresponding
* ModelWorkspaceItem representing the supplied resource.
* @return the {@link ModelWorkspaceItem} instances contained by this project item that represents
* the suppplied resource; may be null if the supplied resource doesn't represent a model or a folder
* or doesn't represent a ModelWorkspaceItem
* @throws ModelWorkspaceException
*/
ModelWorkspaceItem findModelWorkspaceItem( IResource resource ) throws ModelWorkspaceException;
// /**
// * Return the {@link ModelPackageFragmentRoot fragment roots} contained by this
// * project.
// * <p>
// * This method returns the same result as {@link #getChildren()}.
// * </p>
// * @return the {@link ModelPackageFragmentRoot} instances contained in this
// * project item; never null
// */
// ModelWorkspaceItem[] getModelPackageFragmentRoots() throws ModelWorkspaceException;
/**
* Returns an array of non-modeling resources directly contained in this project.
* It does not transitively answer non-Java resources contained in folders;
* these would have to be explicitly iterated over.
* <p>
* Non-model resources includes other files and folders located in the
* project not accounted for by any of it model package fragment
* roots.
* </p>
*
* @return an array of non-Modeling resources directly contained in this project
* @exception ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
Object[] getNonModelingResources() throws ModelWorkspaceException;
}