package org.orienteer.camel;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.RoutesDefinition;
import org.orienteer.camel.component.OIntegrationConfig;
import org.orienteer.camel.tasks.OCamelTaskSession;
import org.orienteer.core.OrienteerWebApplication;
import org.orienteer.core.method.MethodManager;
import org.orienteer.core.module.AbstractOrienteerModule;
import org.orienteer.core.module.IOrienteerModule;
import org.orienteer.core.tasks.OTask;
import org.orienteer.core.util.OSchemaHelper;
import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.OCommandSQL;
import com.orientechnologies.orient.core.metadata.schema.OType;
/**
* {@link IOrienteerModule} for 'camel' module
*/
public class Module extends AbstractOrienteerModule{
protected Module() {
super("camel", 2);
}
@Override
public ODocument onInstall(OrienteerWebApplication app, ODatabaseDocument db) {
super.onInstall(app, db);
// OSchemaHelper helper = OSchemaHelper.bind(db);
makeSchema(app,db);
//Install data model
//Return null of default OModule is enough
return null;
}
@Override
public void onUpdate(OrienteerWebApplication app, ODatabaseDocument db, int oldVersion, int newVersion) {
super.onUpdate(app, db, oldVersion, newVersion);
onInstall(app, db);
db.commit();
db.command(new OCommandSQL("ALTER CLASS "+OIntegrationConfig.TASK_CLASS+" SUPERCLASS "+OTask.TASK_CLASS)).execute();
}
@Override
public void onInitialize(OrienteerWebApplication app, ODatabaseDocument db) {
super.onInitialize(app, db);
app.setMetaData(OIntegrationConfig.INTEGRATION_SESSIONS_KEY, new ConcurrentHashMap<String,CamelContext>());
app.mountPages("org.orienteer.camel.web");
//app.registerWidgets("org.orienteer.camel.widget");
MethodManager.get().addModule(Module.class);
MethodManager.get().reload();
}
private void makeSchema(OrienteerWebApplication app, ODatabaseDocument db){
OSchemaHelper helper = OSchemaHelper.bind(db);
helper.oClass(OIntegrationConfig.TASK_CLASS,OTask.TASK_CLASS)
.oProperty("script", OType.STRING, 15).assignVisualization("textarea");
OCamelTaskSession.onInstallModule(app, db);
}
@Override
public void onDestroy(OrienteerWebApplication app, ODatabaseDocument db) {
super.onDestroy(app, db);
app.unmountPages("org.orienteer.camel.web");
//app.unregisterWidgets("org.orienteer.camel.widget");
MethodManager.get().removeModule(Module.class);
MethodManager.get().reload();
}
}