/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.eclipse.buckminster.rmap;
import java.util.Map;
import org.eclipse.buckminster.model.common.ComponentIdentifier;
import org.eclipse.buckminster.model.common.Documentation;
import org.eclipse.buckminster.model.common.Format;
import org.eclipse.buckminster.model.common.Properties;
import org.eclipse.buckminster.rmap.util.IComponentReader;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
/**
* <!-- begin-user-doc --> A representation of the model object '
* <em><b>Provider</b></em>'. <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getReaderType <em>Reader
* Type</em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#isSource <em>Source</em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#isMutable <em>Mutable</em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getRepository <em>Repository
* </em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getVersionConverter <em>
* Version Converter</em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getURI <em>URI</em>}</li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getMatcher <em>Matcher</em>}
* </li>
* <li>{@link org.eclipse.buckminster.rmap.Provider#getDocumentation <em>
* Documentation</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider()
* @model
* @generated
*/
public interface Provider extends Properties, Matcher {
/**
* <!-- begin-user-doc --> <!-- end-user-doc --> <!-- begin-model-doc -->
* <p>
* Some providers are backed by other resource map like files. The PDE map
* files and the Team PSF files are examples of this. This method returns
* the resource map representation of the backing files
* </p>
* <p>
* It is the resolvers responsibility to check if the provider is delegating
* and if it is, use the delegation map.
* </p>
*
* @return A resource map to use for delegation
* @throws CoreException
* if the delegation map cannot be produced
* @throws UnsupportedOperationException
* if the provider is not a delegating kind
* @see #hasDelegationMap()
* @param reader
* The reader used when exploring the sources used as input
* @param problemCollector
* A MultiStatus that will receive any warnings and errors
* @param queryHints
* A map that will receive query hints such as tags
* @param monitor
* Monitor used for progress reporting <!-- end-model-doc -->
* @model exceptions="org.eclipse.buckminster.model.common.CoreException"
* readerDataType="org.eclipse.buckminster.rmap.IComponentReader"
* problemCollectorType
* ="org.eclipse.buckminster.model.common.IStatus" monitorType=
* "org.eclipse.buckminster.model.common.IProgressMonitor"
* @generated
*/
ResourceMap getDelegationMap(IComponentReader reader, IStatus problemCollector, Map<ComponentIdentifier, Map<String, String>> queryHints,
IProgressMonitor monitor) throws CoreException;
/**
* Returns the value of the '<em><b>Documentation</b></em>' containment
* reference. <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Documentation</em>' containment reference
* isn't clear, there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Documentation</em>' containment reference.
* @see #setDocumentation(Documentation)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_Documentation()
* @model containment="true" extendedMetaData=
* "name='documentation' kind='element' namespace='##targetNamespace'"
* @generated
*/
Documentation getDocumentation();
/**
* Returns the value of the '<em><b>Matcher</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Matcher</em>' containment reference isn't
* clear, there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Matcher</em>' containment reference.
* @see #setMatcher(URIMatcher)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_Matcher()
* @model containment="true" extendedMetaData=
* "name='matcher' kind='element' namespace='##targetNamespace'"
* @generated
*/
URIMatcher getMatcher();
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @model
* @generated
*/
Map<String, String> getProperties(Map<String, String> properties);
/**
* Returns the value of the '<em><b>Reader Type</b></em>' attribute. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Reader Type</em>' attribute isn't clear, there
* really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Reader Type</em>' attribute.
* @see #setReaderType(String)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_ReaderType()
* @model required="true"
* @generated
*/
String getReaderType();
/**
* Returns the value of the '<em><b>Repository</b></em>' reference. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Repository</em>' reference isn't clear, there
* really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Repository</em>' reference.
* @see #setRepository(Repository)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_Repository()
* @model
* @generated
*/
Repository getRepository();
/**
* Returns the value of the '<em><b>URI</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>URI</em>' containment reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>URI</em>' containment reference.
* @see #setURI(Format)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_URI()
* @model containment="true" required="true" extendedMetaData=
* "name='uri' namespace='##targetNamespace' kind='element'"
* @generated
*/
Format getURI();
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @model
* @generated
*/
String getURI(Map<String, String> properties);
/**
* Returns the value of the '<em><b>Version Converter</b></em>' containment
* reference. <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Version Converter</em>' containment reference
* isn't clear, there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Version Converter</em>' containment
* reference.
* @see #setVersionConverter(VersionConverter)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_VersionConverter()
* @model containment="true"
* extendedMetaData="namespace='##targetNamespace' kind='element'"
* @generated
*/
VersionConverter getVersionConverter();
/**
* <!-- begin-user-doc --> <!-- end-user-doc --> <!-- begin-model-doc -->
* <p>
* Some providers are backed by other resource map like files. The PDE map
* files and the Team PSF files are examples of this. This method returns
* <code>true</code> if this is such a provider
* </p>
* <p>
* It is the resolvers responsibility to check if the provider is delegating
* and if it is, use the
* {@link #getDelegationMap(IComponentReader, IStatus, Map, IProgressMonitor)}
* method to obtain the new resource map
* </p>
*
* @return <code>true</code> if this is a delegating provider
*
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean hasDelegationMap();
/**
* Returns the value of the '<em><b>Mutable</b></em>' attribute. The default
* value is <code>"true"</code>. <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Mutable</em>' attribute isn't clear, there
* really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Mutable</em>' attribute.
* @see #setMutable(boolean)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_Mutable()
* @model default="true" volatile="true" derived="true"
* @generated
*/
boolean isMutable();
/**
* Returns the value of the '<em><b>Source</b></em>' attribute. The default
* value is <code>"true"</code>. <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Source</em>' attribute isn't clear, there
* really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Source</em>' attribute.
* @see #setSource(boolean)
* @see org.eclipse.buckminster.rmap.RmapPackage#getProvider_Source()
* @model default="true" volatile="true" derived="true"
* @generated
*/
boolean isSource();
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getDocumentation
* <em>Documentation</em>}' containment reference. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>Documentation</em>' containment
* reference.
* @see #getDocumentation()
* @generated
*/
void setDocumentation(Documentation value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getMatcher <em>Matcher</em>}
* ' containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>Matcher</em>' containment reference.
* @see #getMatcher()
* @generated
*/
void setMatcher(URIMatcher value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#isMutable <em>Mutable</em>}'
* attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>Mutable</em>' attribute.
* @see #isMutable()
* @generated
*/
void setMutable(boolean value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getReaderType
* <em>Reader Type</em>}' attribute. <!-- begin-user-doc --> <!--
* end-user-doc -->
*
* @param value
* the new value of the '<em>Reader Type</em>' attribute.
* @see #getReaderType()
* @generated
*/
void setReaderType(String value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getRepository
* <em>Repository</em>}' reference. <!-- begin-user-doc --> <!--
* end-user-doc -->
*
* @param value
* the new value of the '<em>Repository</em>' reference.
* @see #getRepository()
* @generated
*/
void setRepository(Repository value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#isSource <em>Source</em>}'
* attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>Source</em>' attribute.
* @see #isSource()
* @generated
*/
void setSource(boolean value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getURI <em>URI</em>}'
* containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>URI</em>' containment reference.
* @see #getURI()
* @generated
*/
void setURI(Format value);
/**
* Sets the value of the '
* {@link org.eclipse.buckminster.rmap.Provider#getVersionConverter
* <em>Version Converter</em>}' containment reference. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @param value
* the new value of the '<em>Version Converter</em>' containment
* reference.
* @see #getVersionConverter()
* @generated
*/
void setVersionConverter(VersionConverter value);
} // Provider