/*******************************************************************************
* Copyright (c) 2011 Gerd Wuetherich (gerd@gerd-wuetherich.de).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Gerd Wuetherich (gerd@gerd-wuetherich.de) - initial API and implementation
******************************************************************************/
package org.bundlemaker.core.resource;
import java.util.Collection;
import org.bundlemaker.core.project.IProjectDescriptionAwareBundleMakerProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* <p>
* Represents a bundle maker project.
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface IModuleAwareBundleMakerProject extends IProjectDescriptionAwareBundleMakerProject {
/**
* <p>
* Returns a list with all {@link IModularizedSystem IModularizedSystems} that are defined in this
* {@link IModuleAwareBundleMakerProject}.
* </p>
*
* @return a list with all {@link IModularizedSystem IModularizedSystems} that are defined in this
* {@link IModuleAwareBundleMakerProject}.
* @throws CoreException
*/
Collection<IModularizedSystem> getModularizedSystemWorkingCopies() throws CoreException;
/**
* <p>
* Creates a new working copy of type {@link IModularizedSystem}.
* </p>
*
* @return a new working copy of type {@link IModularizedSystem}.
* @throws CoreException
*
* @precondition BundleMakerProjectState.OPENED
*/
IModularizedSystem createModularizedSystemWorkingCopy(IProgressMonitor progressMonitor, String name)
throws CoreException;
/**
* <p>
* Returns <code>true</code> if this {@link IModuleAwareBundleMakerProject} contains a working copy of type
* {@link IModularizedSystem}, <code>false</code> otherwise.
* </p>
*
* @return <code>true</code> if this {@link IModuleAwareBundleMakerProject} contains a working copy of type
* {@link IModularizedSystem}, <code>false</code> otherwise.
* @throws CoreException
*
* @precondition BundleMakerProjectState.OPENED
*/
boolean hasModularizedSystemWorkingCopy(String name) throws CoreException;
/**
* <p>
* Returns the working copy of type {@link IModularizedSystem} with the given name.
* </p>
*
* @return the working copy of type {@link IModularizedSystem} with the given name.
* @throws CoreException
*
* @precondition BundleMakerProjectState.OPENED
*/
IModularizedSystem getModularizedSystemWorkingCopy(String name) throws CoreException;
/**
* <p>
* Returns the default working copy of type {@link IModularizedSystem}.
* </p>
*
* @return the default working copy of type {@link IModularizedSystem}.
* @throws CoreException
*
* @precondition BundleMakerProjectState.OPENED
*/
IModularizedSystem getModularizedSystemWorkingCopy() throws CoreException;
/**
* <p>
* Deletes the working copy of type {@link IModularizedSystem} with the given name.
* </p>
*
* @param name
* @throws CoreException
*
* @precondition BundleMakerProjectState.OPENED
*/
void deleteModularizedSystemWorkingCopy(String name) throws CoreException;
// /**
// * <p>
// * Returns a list with all binary resources that are contained in this project.
// * </p>
// *
// * @return a list with all binary resources that are contained in this project.
// */
// List<IModuleResource> getBinaryResources();
//
// /**
// * <p>
// * Returns a list with all source resources that are contained in this project.
// * </p>
// *
// * @return a list with all source resources that are contained in this project.
// */
// List<IModuleResource> getSourceResources();
}