/** {@inheritDoc} */ @Override public Map<String, MutableHitCount> getFeatureUsageHitCount(EventQueryDefinition query) { Map<String, MutableHitCount> hitRatio = new TreeMap<String, MutableHitCount>(); for (Event event : searchFeatureUsageEvents(query)) { if (!hitRatio.containsKey(event.getName())) { hitRatio.put(event.getName(), new MutableHitCount()); } hitRatio.get(event.getName()).inc(); } return hitRatio; }
/** * Add Event to chart. * * @param evt * current event */ public void addEvent(Event evt) { if (!series.containsKey(evt.getName())) { createNewSerie(evt.getName()); } String targetSlot = sdf.format(new Date(evt.getTimestamp())); Serie < Map <String, MutableHitCount > > targetSerie = series.get(evt.getName()); if (targetSerie != null) { MutableHitCount mhc = targetSerie.getValue().get(targetSlot); if (mhc != null) { mhc.inc(); } } }
/** {@inheritDoc} */ @Override public String getHitCountKey(Event e) { return ConsulConstants.FF4J_PREFIXKEY_HITS + KDF.format(e.getTimestamp()) + "/" + e.getName() + "/" + e.getUuid(); }
/** {@inheritDoc} */ @Override public String getMissKey(Event e) { return ConsulConstants.FF4J_PREFIXKEY_MISS + KDF.format(e.getTimestamp()) + "/" + e.getName() + "/" + e.getUuid(); }
/** {@inheritDoc} */ @Override public String getAuditTrailKey(Event e) { return ConsulConstants.FF4J_PREFIXKEY_AUDIT + KDF.format(e.getTimestamp()) + "/" + e.getName() + "/" + e.getUuid(); }
private static final String renderAuditRows(FF4j ff4j, HttpServletRequest req) { StringBuilder sb = new StringBuilder(); EventRepository er = ff4j.getEventRepository(); EventQueryDefinition query = new EventQueryDefinition(); for (Event event : er.searchFeatureUsageEvents(query)) { sb.append("<tr>" + END_OF_LINE); sb.append("<td>" + SDF.format(new Date(event.getTimestamp())) + "</td>"); sb.append("<td>" + event.getType() + "</td>"); sb.append("<td>" + event.getName() + "</td>"); sb.append("<td>" + event.getAction() + "</td>"); sb.append("</tr>"); } return sb.toString(); }
/** * 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); }
/** * Worker constructor. * * @param e * event * @param repo * event repository to store events */ public EventWorker(Event e, EventRepository repo) { this.event = e; this.eventRepository = repo; if (e != null) { this.name = e.getTimestamp() + "-" + e.getAction() + "-" + e.getName(); } }
@Override public Map<String, MutableHitCount> getFeatureUsageHitCount(EventQueryDefinition query) { JestResult result = getConnection() .execute(getBuilder().queryGetEventQueryDefinition(query, EventConstants.ACTION_CHECK_OK)); List<Event> events = result.getSourceAsObjectList(Event.class); Map<String, MutableHitCount> hitCount = new HashMap<String, MutableHitCount>(); for (Event event : events) { String name = event.getName(); if (hitCount.containsKey(name)) { hitCount.get(name).inc(); } else { hitCount.put(name, new MutableHitCount(1)); } } return hitCount; }
/** * Method that maps the enum to the appropriate event method (instead of using Reflection). * * @param type - The type of the evnt to be used. * @param event - Actual event object. * @return The value from the event object. */ private String getValueFromAttribute(Types type, Event event) { String value; switch (type) { case HOST: value = event.getHostName(); break; case SOURCE: value = event.getSource(); break; case USER: value = event.getUser(); break; case NAME: value = event.getName(); break; default: value = "NA"; } return value; }
/** {@inheritDoc} */ @Override public Put toStore(Event evt) { Put put = new Put(Bytes.toBytes(evt.getUuid())); put.addColumn(B_AUDIT_CF, B_EVENT_UID, Bytes.toBytes(evt.getUuid())); put.addColumn(B_AUDIT_CF, B_EVENT_SOURCE, Bytes.toBytes(evt.getSource())); put.addColumn(B_AUDIT_CF, B_EVENT_NAME, Bytes.toBytes(evt.getName())); put.addColumn(B_AUDIT_CF, B_EVENT_ACTION, Bytes.toBytes(evt.getAction())); put.addColumn(B_AUDIT_CF, B_EVENT_TYPE, Bytes.toBytes(evt.getType())); put.addColumn(B_AUDIT_CF, B_EVENT_DURATION, Bytes.toBytes(evt.getDuration())); put.addColumn(B_AUDIT_CF, B_EVENT_HOSTNAME, Bytes.toBytes(evt.getHostName())); put.addColumn(B_AUDIT_CF, B_EVENT_USER, Bytes.toBytes(evt.getUser())); put.addColumn(B_AUDIT_CF, B_EVENT_VALUE, Bytes.toBytes(evt.getValue())); put.addColumn(B_AUDIT_CF, B_EVENT_DATE, Bytes.toBytes(KDF.format(evt.getDate()))); put.addColumn(B_AUDIT_CF, B_EVENT_TIME, Bytes.toBytes(evt.getTimestamp())); put.addColumn(B_AUDIT_CF, B_EVENT_KEYS, Bytes.toBytes(MappingUtil.fromMap(evt.getCustomKeys()))); return put; }
stmt.setTimestamp(2, new java.sql.Timestamp(evt.getTimestamp())); stmt.setString(3, evt.getType()); stmt.setString(4, evt.getName()); stmt.setString(5, evt.getAction()); stmt.setString(6, evt.getHostName());
public static void assertEvent(Event evt) { assertNotNull(evt); assertHasLength(evt.getName()); assertHasLength(evt.getType()); assertHasLength(evt.getAction()); }
/** {@inheritDoc} */ @Override public boolean saveEvent(Event e) { Util.assertEvent(e); LOGGER.debug("Event Logged {}", e.toJson()); conn.getSession().execute(getBuilder().cqlCreateEvent(ttl), e.getUuid(), KDF.format(e.getDate()), e.getTimestamp(), e.getType(), e.getName(), e.getAction(), e.getHostName(), e.getSource(), e.getDuration(), e.getUser(), e.getValue(), e.getCustomKeys()); return true; }
/** {@inheritDoc} */ @Override public boolean saveEvent(Event evt) { Util.assertEvent(evt); return getJdbcTemplate().update(getQueryBuilder().sqlSaveAudit(), evt.getUuid(), new java.sql.Timestamp(evt.getTimestamp()), evt.getType(), evt.getName(), evt.getAction(), evt.getHostName(), evt.getSource(), evt.getDuration(), evt.getUser(), evt.getValue(), MappingUtil.fromMap(evt.getCustomKeys())) > 0; }
/** * Match Event. * * @param evt * current event over this query * @return * if event is valid */ public boolean match(Event evt) { return (evt.getTimestamp() >= from) && (evt.getTimestamp() <= to) && matchAction(evt.getAction()) && matchSource(evt.getSource()) && matchHost(evt.getHostName()) && matchName(evt.getName()); }