package dgm.jmx; import com.fasterxml.jackson.databind.ObjectMapper; import com.tinkerpop.blueprints.Graph; import dgm.GraphUtilities; import org.elasticsearch.ElasticSearchException; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.client.Client; import org.nnsoft.guice.sli4j.core.InjectLogger; import org.slf4j.Logger; import javax.inject.Inject; public class GraphBuilder implements GraphBuilderMBean { @InjectLogger Logger log; protected final Client client; protected final Graph graph; protected final ObjectMapper om; @Inject public GraphBuilder(ObjectMapper om, Client client, Graph graph) { this.client = client; this.graph = graph; this.om = om; } @Override public final String esGet(String index, String type, String id) { try { final GetResponse gr = client.prepareGet(index, type, id).execute().actionGet(); if(!gr.exists()) return "Doesn't exist"; return gr.getSourceAsString(); } catch (ElasticSearchException e) { log.debug("ElasticSearchException {}", e); return e.getMessage(); } } @Override public void openConsole() { // TODO move groovy console into groovy package /* import groovy.lang.Binding; import groovy.ui.Console; final Binding binding = new Binding(); binding.setVariable("es", this.client); binding.setVariable("graph", this.graph); final Console console = new Console(ClassLoader.getSystemClassLoader(), binding); console.run(); */ } @Override public final void dumpGraph() { GraphUtilities.dumpGraph(om, graph); } }