/** * Utility. * * @param evt * current evenement * @param startTime * begin time * @param endTime * end time * @return * if the event is between dates */ protected boolean isEventInInterval(Event evt, long startTime, long endTime) { return (evt.getTimestamp() >= startTime) && (evt.getTimestamp() <= endTime); }
/** * Getter accessor for attribute 'timestamp'. * * @return current value of 'timestamp' */ public Date getDate() { return new Date(getTimestamp()); }
/** {@inheritDoc} */ @Override public int compareTo(Event evt) { int myTime = new Long(this.getTimestamp() - evt.getTimestamp()).intValue(); // Not equals even if same timestamp (of course...) return (myTime != 0) ? myTime : evt.getUuid().compareTo(getUuid()); }
/** {@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(); }
/** * 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); }
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(); }
/** * 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(); } }
/** {@inheritDoc} */ public boolean saveEvent(Event evt) { if (evt == null) { throw new IllegalArgumentException("Event cannot be null nor empty"); } Jedis jedis = null; try { jedis = getJedis(); long timeStamp = evt.getTimestamp(); String hashId = this.getHashKey(evt.getTimestamp(), evt.getAction()); evt.setUuid(String.valueOf(timeStamp)); jedis.zadd(hashId, timeStamp, objectMapper.writeValueAsString(evt)); return true; } catch (JsonProcessingException e) { // We do not returned false, it will be retried 3 times for nothing, faile immediately throw new IllegalArgumentException("Cannot save event : invalid object", e); } finally { if (jedis != null) { jedis.close(); } } }
/** * 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 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); }
/** * 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()); }
/** {@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());
String slotName = tsc.getSdf().format(new Date(evt.getTimestamp()));
/** {@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 Event getEventByUUID(String uuid, Long timestamp) { Util.assertHasLength(new String[]{uuid}); Event redisEvent = null; Jedis jedis = null; try { jedis = getJedis(); String hashKey = getHashKey(timestamp, null); // Check for the event within 100ms time range passed, hoping there won't be more than 10 for this. Set<String> events = jedis.zrangeByScore(hashKey, timestamp - 100L, timestamp + 100L, 0, 10); // Loop through the result set and match the timestamp passed in. for (String evt : events) { Event event = marshallEvent(evt); if (timestamp == event.getTimestamp()) { return event; } } } finally { if (jedis != null) { jedis.close(); } } return redisEvent; }
/** {@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; }