Sha256: 6667648a60d426ed61fe1df61879e25e9de2b1e627577d84880ca2d879e2c6ef
Contents?: true
Size: 1.81 KB
Versions: 9
Compression:
Stored size: 1.81 KB
Contents
#!/usr/bin/env ruby require 'pry' $service = nil def service $service ||= com.espertech.esper.client.EPServiceProviderManager.getDefaultProvider end $administrator = nil def administrator $administrator ||= service.getEPAdministrator end def compileEPL(query) administrator.compileEPL(query.expression) end def query_string(model) writer = java.io.StringWriter.new formatter = com.espertech.esper.client.soda.EPStatementFormatter.new if model.respond_to?(:toEPLElement) model.toEPLElement(writer) writer.toString elsif model.respond_to?(:toPrecedenceFreeEPL) begin model.toPrecedenceFreeEPL(writer) rescue ArgumentError model.toPrecedenceFreeEPL(writer, formatter) end writer.toString elsif model.is_a?(Java::ComEspertechEsperClientSoda::EPStatementObjectModel) model.toEPL else model.toEPL(writer, formatter) writer.toString end end def compiledExpression(query) model = compileEPL(query) mapping = {} query.targets.each do |target| mapping[target] = target end Norikra::Query.rewrite_query(model, mapping) query_string(model) end $LOAD_PATH.push './lib' $LOAD_PATH.push './esper' require 'norikra' require 'java' esper_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'esper')) Dir.entries(esper_dir).each do |f| next unless f =~ /^esper-\d+\.\d+\.\d+\.jar$/ require f end Dir.entries(File.join(esper_dir, 'esper', 'lib')).each do |f| if f =~ /^commons-logging-\d+\.\d+\.\d+\.jar$/ || f =~ /^antlr-runtime-\d+\.\d+\.jar/ || f =~ /^cglib-nodep-\d+\.\d+\.jar$/ require File.join('esper', 'lib', f) end end puts <<DESC Example: > query = Norikra::Query.new(name:'test1', expression:'SELECT ...') > > query.ast.to_a # dump query AST > compiledExpression(query) # show parsed and compiled query DESC Pry.start
Version data entries
9 entries across 9 versions & 1 rubygems