/*******************************************************************************
* Copyright (c) 2010, Cloudsmith Inc.
* The code, documentation and other materials contained herein have been
* licensed under the Eclipse Public License - v 1.0 by the copyright holder
* listed above, as the Initial Contributor under such license. The text of
* such license is available at www.eclipse.org.
******************************************************************************/
package org.eclipse.buckminster.core.reader;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.team.core.RepositoryProvider;
/**
* ITeamReaderType extends IRederType with SCM related functionality.
*
* @author michal.ruzicka@cloudsmith.com
*/
public interface ITeamReaderType extends IReaderType {
/**
* Return a source reference suitable for the Eclipse-SourceReference
* Manifest header for the given resource
*
* @param resource
* Resource for which a source reference should be obtained
* @param monitor
* a progress monitor
* @return A source reference or <code>null</code> if no such reference
* could be obtained.
* @throws CoreException
*/
String getSourceReference(IResource resource, IProgressMonitor monitor) throws CoreException;
/**
* Tag the given <code>resources</code> with the given <code>tag</code>.
*
* @param provider
* the <code>RepositoryProvider</code> the <code>resources</code>
* are associated with
* @param resources
* the resources to tag
* @param tag
* the tag to tag the resources with
* @param recurse
* whether the tagging should be deep or shallow
* @param monitor
* a progress monitor
* @return the resulting status of the tagging
* @throws CoreException
*/
IStatus tag(RepositoryProvider provider, IResource[] resources, String tag, boolean recurse, IProgressMonitor monitor) throws CoreException;
}