
org.intellimate.izou.system.context.Output Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of izou Show documentation
Show all versions of izou Show documentation
Izou is a framework used for an addon-based personal assistant
The newest version!
package org.intellimate.izou.system.context;
import org.intellimate.izou.events.EventModel;
import org.intellimate.izou.identification.Identifiable;
import org.intellimate.izou.identification.Identification;
import org.intellimate.izou.identification.IllegalIDException;
import org.intellimate.izou.output.OutputControllerModel;
import org.intellimate.izou.output.OutputExtensionModel;
import org.intellimate.izou.output.OutputPluginModel;
import ro.fortsoft.pf4j.AddonAccessible;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
/**
* @author Leander Kurscheidt
* @version 1.0
*/
@AddonAccessible
public interface Output {
/**
* adds output extension to desired outputPlugin
*
* adds output extension to desired outputPlugin, so that the output-plugin can start and stop the outputExtension
* task as needed. The outputExtension is specific to the output-plugin
*
* @param outputExtension the outputExtension to be added
* @throws IllegalIDException not yet implemented
*/
void addOutputExtension(OutputExtensionModel outputExtension) throws IllegalIDException;
/**
* removes the output-extension of id: extensionId from outputPluginList
*
* @param outputExtension the OutputExtension to remove
*/
void removeOutputExtension(OutputExtensionModel outputExtension);
/**
* adds outputPlugin to outputPluginList, starts a new thread for the outputPlugin, and stores the future object in a HashMap
* @param outputPlugin OutputPlugin to add
* @throws IllegalIDException not yet implemented
*/
void addOutputPlugin(OutputPluginModel outputPlugin) throws IllegalIDException;
/**
* removes the OutputPlugin and stops the thread
* @param outputPlugin the outputPlugin to remove
*/
void removeOutputPlugin(OutputPluginModel outputPlugin);
/**
* Adds a new {@link OutputControllerModel} to Izou.
*
* @param outputController The OutputController to add to Izou.
*/
void addOutputController(OutputControllerModel outputController);
/**
* Removes an existing {@link OutputControllerModel} from Izou.
*
* @param outputController The OutputController to remove from to Izou.
*/
void removeOutputController(OutputControllerModel outputController);
/**
* Returns a {@link Optional} object that may or may not contain the desired {@link OutputControllerModel},
* depending on whether it was registered with Izou or not.
*
* @param identifiable The ID of the OutputController that should be retrieved.
* @return The {@link Optional} object that may or may not contain the desired {@link OutputControllerModel},
* depending on whether it was registered with Izou or not.
*/
Optional getOutputController(Identifiable identifiable);
/**
* Returns all the associated OutputExtensions.
*
* @param outputPlugin the OutputPlugin to search for
* @return a List of Identifications
*/
List getAssociatedOutputExtension(OutputPluginModel, ?> outputPlugin);
/**
* starts every associated OutputExtension
* @param outputPlugin the OutputPlugin to generate the Data for
* @param t the argument or null
* @param event the Event to generate for
* @param the type of the argument
* @param the return type
* @return a List of Future-Objects
*/
List> generateAllOutputExtensions(OutputPluginModel outputPlugin,
T t, EventModel event);
/**
* returns the ID of the Manager
* @return an instance of Idedntification
*/
Identification getManagerIdentification();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy