/** * Ctor. * @param engineURI engine URI * @param specification specifies statement groups */ public StatementMetricRepository(String engineURI, ConfigurationMetricsReporting specification) { this.specification = specification; int numGroups = specification.getStatementGroups().size() + 1; // +1 for default group (remaining stmts) this.groupMetrics = new StatementMetricArray[numGroups]; // default group groupMetrics[0] = new StatementMetricArray(engineURI, "group-default", 100, false); // initialize all other groups int countGroups = 1; for (Map.Entry<String, ConfigurationMetricsReporting.StmtGroupMetrics> entry : specification.getStatementGroups().entrySet()) { ConfigurationMetricsReporting.StmtGroupMetrics config = entry.getValue(); int initialNumStmts = config.getNumStatements(); if (initialNumStmts < 10) { initialNumStmts = 10; } groupMetrics[countGroups] = new StatementMetricArray(engineURI, "group-" + countGroups, initialNumStmts, config.isReportInactive()); countGroups++; } statementGroups = new HashMap<String, Integer>(); }
public void setContext(EPRuntime runtime, EPServicesContext servicesContext) { executionContext = new MetricExecutionContext(servicesContext, runtime, stmtMetricRepository); // create all engine and statement executions metricExecEngine = new MetricExecEngine(this, engineUri, schedule, specification.getEngineInterval()); metricExecStmtGroupDefault = new MetricExecStatement(this, schedule, specification.getStatementInterval(), 0); int countGroups = 1; for (Map.Entry<String, ConfigurationMetricsReporting.StmtGroupMetrics> entry : specification.getStatementGroups().entrySet()) { ConfigurationMetricsReporting.StmtGroupMetrics config = entry.getValue(); MetricExecStatement metricsExecution = new MetricExecStatement(this, schedule, config.getInterval(), countGroups); this.statementGroupExecutions.put(entry.getKey(), metricsExecution); countGroups++; } }
/** * Add a statement, inspecting the statement name and adding it to a statement group or the default group, if none. * @param stmtName name to inspect * @return handle for statement */ public StatementMetricHandle addStatement(String stmtName) { // determine group int countGroups = 1; int groupNumber = -1; for (Map.Entry<String, ConfigurationMetricsReporting.StmtGroupMetrics> entry : specification.getStatementGroups().entrySet()) { List<Pair<StringPatternSet, Boolean>> patterns = entry.getValue().getPatterns(); boolean result = StringPatternSetUtil.evaluate(entry.getValue().isDefaultInclude(), patterns, stmtName); if (result) { groupNumber = countGroups; break; } countGroups++; } // assign to default group if none other apply if (groupNumber == -1) { groupNumber = 0; } int index = groupMetrics[groupNumber].addStatementGetIndex(stmtName); statementGroups.put(stmtName, groupNumber); return new StatementMetricHandle(groupNumber, index); }