package org.intellimate.izou.identification;
import org.intellimate.izou.config.Version;
import ro.fortsoft.pf4j.AddonAccessible;
import java.util.Optional;
/**
* <p>
* An AddOnInformation holds all public information of an addOn. That means all information that other addOns are
* allowed to see about a given addOn is in here. Each addOn has its own instance of AddOnInformation which is
* stored in the {@link AddOnInformationManager}.
* </p>
*
* @author Julian Brendl
* @version 1.0
*/
@AddonAccessible
public interface AddOnInformation extends Identifiable {
/**
* Gets the name of the addOn.
*
* @return The name of the addOn.
*/
String getName();
/**
* Gets the version of the addOn.
*
* @return The version of the addOn.
*/
Version getVersion();
/**
* Gets the provider, or the author, of the addOn.
*
* @return the author of the addOn.
*/
String getProvider();
/**
* Gets the SDK version that this addOn uses.
*
* @return The SDK version that this addOn uses.
*/
Version getSdkVersion();
/**
* Gets the serverID of the addOn, if it has one (used to match the addOn with the server).
*
* @return The serverID of the addOn, if it has one (used to match the addOn with the server).
*/
Optional<Integer> getServerID();
/**
* Gets the artifactID of the addOn. This is the maven artifactID.
*
* @return The artifactID of the addOn. This is the maven artifactID.
*/
String getArtifactID();
/**
* Gets the fully classified ID. An example would be intellimate.izou.addon.myaddon.
*
* @return The fully classified ID. An example would be intellimate.izou.addon.myaddon.
*/
@Override
String getID();
}