/** {@inheritDoc} */ @Override public EventSeries getAuditTrail(EventQueryDefinition query) { return new EventSeries(); }
/** {@inheritDoc} */ @Override public EventSeries searchFeatureUsageEvents(EventQueryDefinition query) { return new EventSeries(); }
/** {@inheritDoc} */ private EventSeries searchEvents(String sqlQuery, long from, long to) { EventSeries es = new EventSeries(); es.addAll(getJdbcTemplate().query(sqlQuery, EVENT_ROWMAPPER, new Timestamp(from), new Timestamp(to))); return es; }
/** * Save event to target (based on ACTION). * * @param e * current event * @param target * target list * @return if the evetn is stored */ private boolean saveEvent(Event e, Map<String, Map<String, EventSeries>> target) { String key = getKeyDate(e.getTimestamp()); String uid = e.getName(); if (!target.containsKey(key)) { target.put(key, new ConcurrentHashMap<String, EventSeries>()); } if (!target.get(key).containsKey(uid)) { target.get(key).put(uid, new EventSeries(this.queueCapacity)); } return target.get(key).get(uid).add(e); }
/** {@inheritDoc} */ private EventSeries searchEvents(String sqlQuery, long from, long to) { Connection sqlConn = null; PreparedStatement ps = null; ResultSet rs = null; EventSeries es = new EventSeries(); try { sqlConn = getDataSource().getConnection(); ps = sqlConn.prepareStatement(sqlQuery); ps.setTimestamp(1, new Timestamp(from)); ps.setTimestamp(2, new Timestamp(to)); rs = ps.executeQuery(); while (rs.next()) { es.add(EVENT_MAPPER.mapEvent(rs)); } } catch (SQLException sqlEX) { throw new IllegalStateException("CANNOT_READ_AUDITTABLE", sqlEX); } finally { closeResultSet(rs); closeStatement(ps); closeConnection(sqlConn); } return es; }
/** {@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; }
/** {@inheritDoc} */ @Override public boolean saveEvent(Event e) { Util.assertEvent(e); if (EventConstants.ACTION_CHECK_OK.equalsIgnoreCase(e.getAction())) { return saveEvent(e, featureUsageEvents); } else if (EventConstants.ACTION_CHECK_OFF.equalsIgnoreCase(e.getAction())) { return saveEvent(e, checkOffEvents); } String key = getKeyDate(e.getTimestamp()); if (!auditTrailEvents.containsKey(key)) { auditTrailEvents.put(key, new EventSeries(this.queueCapacity)); } return auditTrailEvents.get(key).add(e); }
/** {@inheritDoc} */ @Override public EventSeries searchFeatureUsageEvents(EventQueryDefinition query) { String cqlQuery = getBuilder().cqlAuditFeatureUsage(query); LOGGER.debug("Query " + cqlQuery); ResultSet rs = conn.getSession().execute(cqlQuery); EventSeries es = new EventSeries(); for (Row row : rs.all()) { es.add(CassandraMapper.mapEvent(row)); } return es; }
/** TDD. */ @Test public void testLimitEventSeries() throws InterruptedException { EventSeries es = new EventSeries(5); for (int i = 0; i < 10; i++) { Thread.sleep(10); es.add(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE)); } Assert.assertEquals(5, es.size()); }
/** {@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; }
/** {@inheritDoc} */ @Override public EventSeries getAuditTrail(EventQueryDefinition query) { String cqlQuery = getBuilder().cqlAuditTrail(query); LOGGER.debug("Query " + cqlQuery); ResultSet rs = conn.getSession().execute(cqlQuery); EventSeries es = new EventSeries(); Set < String > candidates = Util.set(ACTION_DISCONNECT, ACTION_TOGGLE_ON, ACTION_TOGGLE_OFF, ACTION_CREATE, ACTION_DELETE, ACTION_UPDATE, ACTION_CLEAR); for (Row row : rs.all()) { if (candidates.contains(row.getString(COL_EVENT_ACTION))) es.add(CassandraMapper.mapEvent(row)); } return es; }
@Override public EventSeries searchFeatureUsageEvents(EventQueryDefinition query) { JestResult result = getConnection() .execute(getBuilder().queryGetEventQueryDefinition(query, EventConstants.ACTION_CHECK_OK)); List<Event> events = result.getSourceAsObjectList(Event.class); EventSeries es = new EventSeries(); for (Event event : events) { es.add(event); } return es; }
@Override public EventSeries getAuditTrail(EventQueryDefinition query) { JestResult result = getConnection().execute(getBuilder().queryGetEventQueryDefinition(query)); List<Event> events = result.getSourceAsObjectList(Event.class); EventSeries es = new EventSeries(); Set<String> candidates = Util.set(ACTION_DISCONNECT, // ACTION_TOGGLE_ON, ACTION_TOGGLE_OFF, ACTION_CREATE, // ACTION_DELETE, ACTION_UPDATE, ACTION_CLEAR); for (Event event : events) { if (candidates.contains(event.getAction())) es.add(event); } return es; }
/** {@inheritDoc} */ @Override public EventSeries getAuditTrail(EventQueryDefinition query) { EventSeries es = new EventSeries(); try (Connection hbConn = ConnectionFactory.createConnection(conn.getConfig())) { try(Table table = hbConn.getTable(AUDIT_TABLENAME)) { query.getActionFilters().add(ACTION_CHECK_OK); Scan scanQuery = buildQuery(query, COLS_EVENT, null); Set < String > candidates = Util.set(ACTION_DISCONNECT, ACTION_TOGGLE_ON, ACTION_TOGGLE_OFF, ACTION_CREATE, ACTION_DELETE, ACTION_UPDATE, ACTION_CLEAR); try(ResultScanner scanner = table.getScanner(scanQuery)) { for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { String action = Bytes.toString(rr.getValue(B_AUDIT_CF, B_EVENT_ACTION)); if (candidates.contains(action)) { es.add(MAPPER.fromStore(rr)); } } } } } catch (IOException e) { throw new AuditAccessException("Cannot search audit trail ", e); } return es; }
/** {@inheritDoc} */ @Override public EventSeries searchFeatureUsageEvents(EventQueryDefinition query) { EventSeries es = new EventSeries(); try (Connection hbConn = ConnectionFactory.createConnection(conn.getConfig())) { try(Table table = hbConn.getTable(AUDIT_TABLENAME)) { query.getActionFilters().add(ACTION_CHECK_OK); Scan scanQuery = buildQuery(query, COLS_EVENT, EventConstants.TARGET_FEATURE); try(ResultScanner scanner = table.getScanner(scanQuery)) { for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { es.add(MAPPER.fromStore(rr)); } } } } catch (IOException e) { throw new AuditAccessException("Cannot search feature usage ", e); } return es; }
/** {@inheritDoc} */ @Override public EventSeries getAuditTrail(EventQueryDefinition query) { Jedis jedis = null; EventSeries eventSeries = new EventSeries(); try { jedis = getJedis(); String hashKey = getHashKey(query.getFrom(), EventConstants.ACTION_CHECK_OK); Set<String> events = jedis.zrangeByScore(hashKey, query.getFrom(), query.getTo(), 0, 100); // FIXME: Server side pagination model isn't present? This could be a lot of data. for (String event : events) { eventSeries.add(marshallEvent(event)); } } finally { if (jedis != null) { jedis.close(); } } return eventSeries; }