package org.orienteer.core.module; import java.util.Set; import org.orienteer.core.OrienteerWebApplication; import ru.ydn.wicket.wicketorientdb.OrientDbWebApplication; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.record.impl.ODocument; /** * Interface for Orienteer modules */ public interface IOrienteerModule { String OMODULE_CLASS = "OModule"; String OMODULE_NAME = "name"; String OMODULE_VERSION = "version"; String OMODULE_ACTIVATE = "activate"; /** * Name of the module. Should be static * @return name of the module */ public String getName(); /** * Current version of the module * @return a version as number */ public int getVersion(); /** * Get dependencies for this module. Dependencies should be static * @return set with dependencies */ public Set<String> getDependencies(); /** * Install this application in the environment * @param app {@link OrientDbWebApplication} * @param db database * @return {@link ODocument} for a module or null of default OModule is OK */ public ODocument onInstall(OrienteerWebApplication app, ODatabaseDocument db); /** * Update installed module * @param app {@link OrientDbWebApplication} * @param db database * @param moduleDoc module {@link ODocument} * @param oldVersion previous version * @param newVersion new version * @return {@link ODocument} of a module or null if document was not exchanged */ public ODocument onUpdate(OrienteerWebApplication app, ODatabaseDocument db, ODocument moduleDoc, int oldVersion, int newVersion); /** * Uninstall this module * @param app {@link OrientDbWebApplication} * @param db database * @param moduleDoc module {@link ODocument} */ public void onUninstall(OrienteerWebApplication app, ODatabaseDocument db, ODocument moduleDoc); /** * Run this module * @param app {@link OrientDbWebApplication} * @param db database * @param moduleDoc module {@link ODocument} */ public void onInitialize(OrienteerWebApplication app, ODatabaseDocument db, ODocument moduleDoc); /** * Invoked when module configuration was changed * @param app {@link OrientDbWebApplication} * @param db database * @param moduleDoc module {@link ODocument} */ public void onConfigurationChange(OrienteerWebApplication app, ODatabaseDocument db, ODocument moduleDoc); /** * Stop this module * @param app {@link OrientDbWebApplication} * @param db database * @param moduleDoc module {@link ODocument} */ public void onDestroy(OrienteerWebApplication app, ODatabaseDocument db, ODocument moduleDoc); }