protected EventQueryDefinition buildQuery(HttpServletRequest req) { EventQueryDefinition edf = new EventQueryDefinition(); try { Date from = SDFSLOT.parse(req.getParameter("slotfrom")); Date to = SDFSLOT.parse(req.getParameter("slotto")); edf = new EventQueryDefinition(from.getTime(), to.getTime()); } catch(ParseException pe) { // Nothing to raise, use default values. } return edf; }
StringBuilder sb = new StringBuilder("SELECT " + fields); sb.append(" FROM " + connection.getKeySpace() + "." + COLUMN_FAMILY_AUDIT); sb.append(" WHERE (" + COL_EVENT_TIME + "> '" + SDF_TIMESTAMP.format(new Date(qDef.getFrom())) + "')"); sb.append(" AND (" + COL_EVENT_TIME + "< '" + SDF_TIMESTAMP.format(new Date(qDef.getTo())) + "')"); if (null != type) { sb.append(" AND (" + COL_EVENT_TYPE + " = '" + type + "')"); if (!qDef.getActionFilters().isEmpty()) { sb.append(" AND (" + COL_EVENT_ACTION + " IN "); sb.append(buildClauseIn(qDef.getActionFilters())); sb.append(")"); if (!qDef.getHostFilters().isEmpty()) { sb.append(" AND (" + COL_EVENT_HOSTNAME + " IN "); sb.append(buildClauseIn(qDef.getHostFilters())); sb.append(")"); if (!qDef.getNamesFilter().isEmpty()) { sb.append(" AND (" + COL_EVENT_NAME + " IN "); sb.append(buildClauseIn(qDef.getNamesFilter())); sb.append(")"); if (!qDef.getSourceFilters().isEmpty()) { sb.append(" AND (" + COL_EVENT_SOURCE + " IN "); sb.append(buildClauseIn(qDef.getSourceFilters())); sb.append(")");
/** {@inheritDoc} */ @Override public void purgeFeatureUsage(EventQueryDefinition query) { Util.assertNotNull(query); // Enforce removing events for feature usage query.getActionFilters().add(ACTION_CHECK_OK); getJdbcTemplate().update( getQueryBuilder().getPurgeFeatureUsageQuery(query), new java.sql.Timestamp(query.getFrom()), new java.sql.Timestamp(query.getTo())); }
if (qDef.getActionFilters().isEmpty()) { if (filterForCheck) { qDef.getActionFilters().add(ACTION_CHECK_OK); qDef.getActionFilters().add(ACTION_CONNECT); qDef.getActionFilters().add(ACTION_DISCONNECT); qDef.getActionFilters().add(ACTION_TOGGLE_ON); qDef.getActionFilters().add(ACTION_TOGGLE_OFF); qDef.getActionFilters().add(ACTION_CREATE); qDef.getActionFilters().add(ACTION_DELETE); qDef.getActionFilters().add(ACTION_UPDATE); qDef.getActionFilters().add(ACTION_CLEAR); if (qDef.getActionFilters() != null && !qDef.getActionFilters().isEmpty()) { sb.append(" AND (" + COL_EVENT_ACTION + " IN "); sb.append(buildClauseIn(qDef.getActionFilters())); sb.append(")"); if (qDef.getHostFilters() != null && !qDef.getHostFilters().isEmpty()) { sb.append(" AND (" + COL_EVENT_HOSTNAME + " IN "); sb.append(buildClauseIn(qDef.getHostFilters())); sb.append(")"); if (qDef.getNamesFilter() != null && !qDef.getNamesFilter().isEmpty()) { sb.append(" AND (" + COL_EVENT_NAME + " IN "); sb.append(buildClauseIn(qDef.getNamesFilter())); sb.append(")"); if (qDef.getSourceFilters() != null && !qDef.getSourceFilters().isEmpty()) {
/** {@inheritDoc} */ @Override public EventSeries getAuditTrail(EventQueryDefinition q) { EventSeries resultSeries = new EventSeries(10000); for (String currentDay : getCandidateDays(q.getFrom(), q.getTo())) { if (auditTrailEvents.containsKey(currentDay)) { Iterator<Event> iterEvents = auditTrailEvents.get(currentDay).iterator(); while (iterEvents.hasNext()) { Event evt = iterEvents.next(); if (q.match(evt)) { resultSeries.add(evt); } } } } return resultSeries; }
public TimeSeriesChart getFeatureUsageHistory(EventQueryDefinition query, TimeUnit units) { TimeSeriesChart tsc = new TimeSeriesChart(query.getFrom(), query.getTo(), units); for (String currentDay : getCandidateDays(query.getFrom(), query.getTo())) { String currentFeatureName = entry.getKey(); Set < String > filteredFeatures = query.getNamesFilter(); if (filteredFeatures == null || filteredFeatures.isEmpty() || filteredFeatures.contains(currentFeatureName)) { if (isEventInInterval(evt, query.getFrom(), query.getTo())) {
/** {@inheritDoc} */ @Override public EventSeries searchFeatureUsageEvents(EventQueryDefinition query) { EventSeries es = new EventSeries(1000000); // Dates are the keys of the storage map, compute list of keys and loop over them for (String currentDay : getCandidateDays(query.getFrom(), query.getTo())) { // There are some events with the current date if (featureUsageEvents.containsKey(currentDay)) { Map<String, EventSeries> currentDayEvents = featureUsageEvents.get(currentDay); for (String currentFeature : currentDayEvents.keySet()) { // query can have filters for names, here we limite the number of map to scan if (query.matchName(currentFeature)) { Iterator<Event> iterEvents = currentDayEvents.get(currentFeature).iterator(); while (iterEvents.hasNext()) { Event evt = iterEvents.next(); // use other filter (host, action, timestamp....) if (query.match(evt)) { es.add(evt); } } } } } } return es; }
/** * Retrieve time interval for audit events in history by parsing incoming http request. * * @param req * current http request * @return * a time intervale startTime - endTime */ protected EventQueryDefinition parseQuery(HttpServletRequest req) { EventQueryDefinition def = new EventQueryDefinition(); try { if (isValidParam(req, WebConstants.START_DATE)) { def.setFrom(SDF.parse(req.getParameter(WebConstants.START_DATE)).getTime()); } if (isValidParam(req, WebConstants.END_DATE)) { def.setTo(SDF.parse(req.getParameter(WebConstants.END_DATE)).getTime()); } } catch(ParseException pe) {} return def; }
/** * Get uids * -> between 2 dates * -> For features only * -> for check only * @return */ public String cqlFeatureUsageHitCount(EventQueryDefinition qDef) { qDef.getActionFilters().add(ACTION_CHECK_OK); return cqlSearchAudit(qDef, COL_EVENT_NAME, EventConstants.TARGET_FEATURE); }
/** {@inheritDoc} */ @Override public void purgeFeatureUsage(EventQueryDefinition qDef) { Util.assertNotNull(qDef); // Enforce remove "checks" qDef.getActionFilters().add(ACTION_CHECK_OK); Connection sqlConn = null; PreparedStatement ps = null; ResultSet rs = null; try { sqlConn = getDataSource().getConnection(); ps = sqlConn.prepareStatement(getQueryBuilder().getPurgeFeatureUsageQuery(qDef)); ps.setTimestamp(1, new java.sql.Timestamp(qDef.getFrom())); ps.setTimestamp(2, new java.sql.Timestamp(qDef.getTo())); ps.executeUpdate(); } catch (SQLException sqlEX) { throw new IllegalStateException("CANNOT_READ_AUDITTABLE", sqlEX); } finally { closeResultSet(rs); closeStatement(ps); closeConnection(sqlConn); } }
/** {@inheritDoc} */ @Override public void purgeAuditTrail(EventQueryDefinition q) { for (String currentDay : getCandidateDays(q.getFrom(), q.getTo())) { if (auditTrailEvents.containsKey(currentDay)) { Iterator<Event> iterEvents = auditTrailEvents.get(currentDay).iterator(); while (iterEvents.hasNext()) { Event evt = iterEvents.next(); if (q.match(evt)) { auditTrailEvents.get(currentDay).remove(evt); } } if (auditTrailEvents.get(currentDay).isEmpty()) { auditTrailEvents.remove(currentDay); } } } }
public EventRepositoryApiBean(EventRepository evtRepository, Long start, Long end) { type = evtRepository.getClass().getName(); EventQueryDefinition query = new EventQueryDefinition(); if (start != null) { query.setFrom(start); } if (end != null) { query.setTo(end); } // Create PIE eventsPie = new PieChartApiBean(evtRepository.getFeatureUsagePieChart(query)); // Create BARCHART barChart = new BarChartApiBean(evtRepository.getFeatureUsageBarChart(query)); // Total Count for (PieSectorApiBean sector : eventsPie.getSectors()) { hitCount += sector.getValue(); } }
public String cqlSourceHitCount(EventQueryDefinition qDef) { qDef.getActionFilters().add(ACTION_CHECK_OK); return cqlSearchAudit(qDef, COL_EVENT_SOURCE, EventConstants.TARGET_FEATURE); }
/** * Define output context for audit. * * @param ctx * current web contetx * @param eqd * curren query */ private void createPage(WebContext ctx, EventQueryDefinition eqd) { ctx.setVariable(KEY_TITLE, "Feature Usage"); ctx.setVariable("from", SDFSLOT.format(new Date(eqd.getFrom()))); ctx.setVariable("to", SDFSLOT.format(new Date(eqd.getTo()))); ctx.setVariable("fromJS", SDF.format(new Date(eqd.getFrom()))); ctx.setVariable("toJS", SDF.format(new Date(eqd.getTo()))); }
CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(qDef.getFrom())); filterFrom.setFilterIfMissing(true); filterList.addFilter(filterFrom); CompareOp.LESS_OR_EQUAL, Bytes.toBytes(qDef.getTo())); filterTo.setFilterIfMissing(true); filterList.addFilter(filterTo); if (!qDef.getActionFilters().isEmpty()) { filterList.addFilter( createFilterListOR(B_EVENT_ACTION, qDef.getActionFilters())); if (!qDef.getHostFilters().isEmpty()) { filterList.addFilter( createFilterListOR(B_EVENT_HOSTNAME, qDef.getHostFilters())); if (!qDef.getNamesFilter().isEmpty()) { filterList.addFilter( createFilterListOR(B_EVENT_NAME, qDef.getNamesFilter())); if (!qDef.getSourceFilters().isEmpty()) { filterList.addFilter( createFilterListOR(B_EVENT_SOURCE, qDef.getSourceFilters()));
/** {@inheritDoc} */ @Override public void purgeFeatureUsage(EventQueryDefinition q) { Set<String> candidateDates = getCandidateDays(q.getFrom(), q.getTo()); for (String currentDay : candidateDates) { if (featureUsageEvents.containsKey(currentDay)) { Map<String, EventSeries> currentDayEvents = featureUsageEvents.get(currentDay); for (String currentFeature : currentDayEvents.keySet()) { Iterator<Event> iterEvents = currentDayEvents.get(currentFeature).iterator(); while (iterEvents.hasNext()) { Event evt = iterEvents.next(); if (q.match(evt)) { removeEventIfPresent(currentDayEvents.get(currentFeature), evt); } if (currentDayEvents.get(currentFeature).isEmpty()){ currentDayEvents.remove(currentFeature); } } } // Remove list if empty if (currentDayEvents.isEmpty()) { featureUsageEvents.remove(currentDay); } } } }
/** {@inheritDoc} */ public void get(HttpServletRequest req, HttpServletResponse res, WebContext ctx) throws Exception { createPage(ctx, new EventQueryDefinition()); LOGGER.info("Display feature usage"); }
public EventRepositoryApiBean(EventRepository evtRepository, Long start, Long end) { type = evtRepository.getClass().getName(); EventQueryDefinition query = new EventQueryDefinition(); if (start != null) { query.setFrom(start); } if (end != null) { query.setTo(end); } // Create PIE eventsPie = new PieChartApiBean(evtRepository.getFeatureUsagePieChart(query)); // Create BARCHART barChart = new BarChartApiBean(evtRepository.getFeatureUsageBarChart(query)); // Total Count for (PieSectorApiBean sector : eventsPie.getSectors()) { hitCount += sector.getValue(); } }
public String cqlAuditFeatureUsage(EventQueryDefinition qDef) { qDef.getActionFilters().add(ACTION_CHECK_OK); return cqlSearchAudit(qDef, "*", EventConstants.TARGET_FEATURE); }