/** {@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} */ public Event fromStore(Result result) { if (result == null) return null; Event evt = new Event(); evt.setUuid(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_UID))); evt.setSource(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_SOURCE))); evt.setType(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_TYPE))); evt.setName(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_NAME))); evt.setAction(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_ACTION))); evt.setDuration(Bytes.toLong(result.getValue(B_AUDIT_CF, B_EVENT_DURATION))); evt.setHostName(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_HOSTNAME))); evt.setUser(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_USER))); evt.setValue(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_VALUE))); evt.setTimestamp(Bytes.toLong(result.getValue(B_AUDIT_CF, B_EVENT_TIME))); evt.setCustomKeys(MappingUtil.toMap(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_KEYS)))); return evt; }
/** {@inheritDoc} */ @Override public String getHitCountKey(Event e) { return ConsulConstants.FF4J_PREFIXKEY_HITS + KDF.format(e.getTimestamp()) + "/" + e.getName() + "/" + e.getUuid(); }
/** * 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(); } }
/** * 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()); }
/** * Marshall from cassandra row to bean {@link Event}. * * @param row * current cassandra row * @return * target property bean */ public static Event mapEvent(Row row) { if (row == null) return null; Event evt = new Event(row.getString(COL_EVENT_SOURCE), row.getString(COL_EVENT_TYPE), row.getString(COL_EVENT_NAME), row.getString(COL_EVENT_ACTION)); evt.setUuid(row.getString(COL_EVENT_UID)); evt.setCustomKeys(row.getMap(COL_EVENT_KEYS, String.class, String.class)); evt.setDuration(row.getLong(COL_EVENT_DURATION)); evt.setHostName(row.getString(COL_EVENT_HOSTNAME)); evt.setTimestamp(row.getTimestamp(COL_EVENT_TIME).getTime()); evt.setUser(row.getString(COL_EVENT_USER)); evt.setValue(row.getString(COL_EVENT_VALUE)); return evt; }
/** * 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; }
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(); }
/** {@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(); } } }
/** TDD. */ @Test public void testPurgeEvents() throws InterruptedException { // Given, 2 events in the repo long topStart = System.currentTimeMillis(); Event evtAudit = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE); evtAudit.setUuid("1234-5678-9012-3456"); Event evtFeatureUsage = new Event(SOURCE_JAVA, TARGET_FEATURE, "f2", ACTION_CHECK_OK); evtFeatureUsage.setUuid("1234-5678-9012-3457"); repo.saveEvent(evtAudit); repo.saveEvent(evtFeatureUsage); Thread.sleep(100); Assert.assertNotNull(repo.getEventByUUID(evtAudit.getUuid(), System.currentTimeMillis())); Assert.assertNotNull(repo.getEventByUUID(evtFeatureUsage.getUuid(), System.currentTimeMillis())); // When EventQueryDefinition testQuery = new EventQueryDefinition(topStart - 100, System.currentTimeMillis()); repo.purgeAuditTrail(testQuery); // Then Assert.assertNull(repo.getEventByUUID(evtAudit.getUuid(), System.currentTimeMillis())); repo.purgeFeatureUsage(testQuery); Thread.sleep(100); Assert.assertNull(repo.getEventByUUID(evtFeatureUsage.getUuid(), System.currentTimeMillis())); }
/** {@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 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); }
/** * Event generation. * * @param uid * target unique identifier * @return unique event */ protected Event generateFeatureUsageEvent(String uid) { return new Event(SOURCE_JAVA, TARGET_FEATURE, uid, ACTION_CHECK_OK); }
-override onInterceptTouchEvent(Event e) { if (e.getAction() == ACTION_DOWN){ //dispatch the call manually to the scroll view below you mChild.onTouchEvent(e); super.onTouchEvent(e); } if (e.getAction() == ACTION_MOVE && the move is horizontal){ mChild.onTouchEvent(e); } else { super.onTouchEvent(e); } return true; }
/** * 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); }
/** TDD. */ @Test public void testGetEventByUID() throws InterruptedException { // Given String dummyId = "1234-5678-9012-3456"; Event evt1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OFF); evt1.setUuid(dummyId); // When repo.saveEvent(evt1); // Let the store to be updated Thread.sleep(100); // Then Event evt = repo.getEventByUUID(dummyId, System.currentTimeMillis()); Assert.assertNotNull(evt); }
/** TDD. */ @Test public void testUserHitCount() throws InterruptedException { long start = System.currentTimeMillis(); // When for (int i = 0; i < 8; i++) { Event e1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK); e1.setUser("JOHN"); repo.saveEvent(e1); Thread.sleep(100); Event e2 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK); e2.setUser("BOB"); repo.saveEvent(e2); Thread.sleep(100); } Thread.sleep(200); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start - 20, System.currentTimeMillis()); Map<String, MutableHitCount> mapOfHit = repo.getUserHitCount(testQuery); Assert.assertEquals(2, mapOfHit.size()); Assert.assertTrue(mapOfHit.containsKey("JOHN")); Assert.assertTrue(mapOfHit.containsKey("BOB")); Assert.assertEquals(8, mapOfHit.get("BOB").get()); }