package org.bundlemaker.core.analysis;
import org.bundlemaker.core.resource.IModule;
/**
* <p>
* Defines an {@link IBundleMakerArtifact} that holds an {@link IModule} instance.
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public interface IModuleArtifact extends IBundleMakerArtifact {
/**
* <p>
* Returns the associated module.
* </p>
*
* @return the associated module.
*/
IModule getAssociatedModule();
/**
* <p>
* Returns the module name, e.g. {@code MyModule_1.2.0}, never {@code null}.
* </p>
*
* @return the module name, e.g. {@code MyModule_1.2.0}, never {@code null}.
*/
String getName();
/**
* <p>
* Returns the qualified module name, e.g. {@code group1/group2/MyModule_1.2.0}, never {@code null}.
* </p>
*
* @return the qualified module name, e.g. {@code group1/group2/MyModule_1.2.0}, never {@code null}.
*/
String getQualifiedName();
/**
* <p>
* Returns the module name.
* </p>
*
* @return the name of the module.
*/
String getModuleName();
/**
* <p>
* Returns the module version.
* </p>
*
* @return the module version.
*/
String getModuleVersion();
/**
* <p>
* Sets the name and the version of this {@link IModuleArtifact}.
* </p>
*
* @param name
* the name
* @param version
* the version
*/
void setNameAndVersion(String name, String version);
/**
* <p>
* Returns <code>true</code> if this {@link IModuleArtifact} represents a resource module, <code>false</code>
* otherwise.
* </p>
*
* @return <code>true</code> if this {@link IModuleArtifact} represents a resource module, <code>false</code>
* otherwise.
*/
boolean isResourceModule();
}