package LinGUIne.extensions; import java.util.Collection; import LinGUIne.model.IProjectData; import LinGUIne.model.IProjectDataContents; import LinGUIne.model.Result; /** * Interface defining methods for all AnalysisPlugins. * This package will have to be imported to any AnalysisPlugin projects. * * @author Pete Maresca * @author Kyle Mullins */ public interface IAnalysisPlugin { /** * Returns the name of the plugin. */ String getName(); /** * Returns the name of the associated Binary Software Module. */ String getAnalysisLibrary(); /** * Returns a text description of this AnalysisPlugin. */ String getAnalysisDescription(); /** * Returns more detailed data about this AnalysisPlugin if necessary. */ Object getPluginData(); /** * Runs the analysis this AnalysisPlugin is responsible for executing. */ Collection<IProjectDataContents> runAnalysis(Collection<IProjectData> sourceData); /** * Returns a collection of all of the original (i.e. non-Result) ProjectData * Types that this AnalysisPlugin can be run with. * Note: The Types returned should be as specific as possible. */ Collection<Class<? extends IProjectData>> getSupportedSourceDataTypes(); /** * Returns a collection of all of the Result object Types that are required * in order to run this AnalysisPlugin or an empty collection if no prior * Results are needed. * Note: The Types returned should be as specific as possible. */ Collection<Class<? extends Result>> getRequiredResultTypes(); /** * Returns the Type of Result object that is returned by running this * AnalysisPlugin. * Note: The Type returned should be as specific as possible. */ Class<? extends Result> getReturnedResultType(); }