Search in sources :

Example 1 with Serie

use of org.ff4j.audit.chart.Serie in project ff4j by ff4j.

the class AbstractEventRepository method renderPieChart.

/**
 * Convert hicount into pieChart.
 *
 * @param hitRatio
 *      current hist ratio
 * @return
 *      pie chart
 */
private PieChart renderPieChart(String title, Map<String, MutableHitCount> hitRatio, List<String> colors) {
    PieChart pieChart = new PieChart(title);
    int idxColor = 0;
    for (String key : hitRatio.keySet()) {
        Serie<Integer> ps = new Serie<Integer>(key, hitRatio.get(key).get(), colors.get(idxColor));
        pieChart.getSectors().add(ps);
        idxColor++;
    }
    return pieChart;
}
Also used : PieChart(org.ff4j.audit.chart.PieChart) Serie(org.ff4j.audit.chart.Serie)

Example 2 with Serie

use of org.ff4j.audit.chart.Serie in project ff4j by ff4j.

the class InMemoryEventRepository method getFeatureUsageHistory.

/**
 * {@inheritDoc}
 */
@Override
public TimeSeriesChart getFeatureUsageHistory(EventQueryDefinition query, TimeUnit units) {
    // Create the interval depending on units
    TimeSeriesChart tsc = new TimeSeriesChart(query.getFrom(), query.getTo(), units);
    for (String currentDay : getCandidateDays(query.getFrom(), query.getTo())) {
        // There are some event this day
        if (featureUsageEvents.containsKey(currentDay)) {
            for (Map.Entry<String, EventSeries> entry : featureUsageEvents.get(currentDay).entrySet()) {
                String currentFeatureName = entry.getKey();
                // Filter feature names if required
                Set<String> filteredFeatures = query.getNamesFilter();
                if (filteredFeatures == null || filteredFeatures.isEmpty() || filteredFeatures.contains(currentFeatureName)) {
                    // Loop over events
                    for (Event evt : entry.getValue()) {
                        // Between bounds (keydate not enough)
                        if (isEventInInterval(evt, query.getFrom(), query.getTo())) {
                            // Create new serie if new feature Name
                            if (!tsc.getSeries().containsKey((currentFeatureName))) {
                                tsc.createNewSerie(currentFeatureName);
                            }
                            // Match FeatureName
                            Serie<Map<String, MutableHitCount>> serie = tsc.getSeries().get(currentFeatureName);
                            // Match SlotName
                            String slotName = tsc.getSdf().format(new Date(evt.getTimestamp()));
                            // Should be always 'true' as the tsc.getsdf().format() will get a slotName.
                            if (serie.getValue().containsKey(slotName)) {
                                // Fast Increment
                                serie.getValue().get(slotName).inc();
                            }
                        }
                    }
                }
            }
        }
    }
    // Recolor series
    List<String> colors = Util.generateHSVGradient("ee1100", "442299", tsc.getSeries().size());
    int idxColor = 0;
    for (Map.Entry<String, Serie<Map<String, MutableHitCount>>> serie : tsc.getSeries().entrySet()) {
        serie.getValue().setColor(colors.get(idxColor));
        idxColor++;
    }
    return tsc;
}
Also used : TimeSeriesChart(org.ff4j.audit.chart.TimeSeriesChart) EventSeries(org.ff4j.audit.EventSeries) Date(java.util.Date) MutableHitCount(org.ff4j.audit.MutableHitCount) Event(org.ff4j.audit.Event) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) TreeMap(java.util.TreeMap) Map(java.util.Map) Serie(org.ff4j.audit.chart.Serie)

Example 3 with Serie

use of org.ff4j.audit.chart.Serie in project ff4j by ff4j.

the class AuditBeanTest method testPieChart.

@Test
public void testPieChart() {
    PieChart bc = new PieChart("p1");
    Serie<Integer> s1 = new Serie<Integer>("s1", 12);
    Serie<Integer> s2 = new Serie<Integer>("s2", 14);
    bc.getSectors().add(s1);
    bc.getSectors().add(s2);
    Assert.assertNotNull(bc.getSectors());
    Assert.assertNotNull(bc.toString());
}
Also used : PieChart(org.ff4j.audit.chart.PieChart) Serie(org.ff4j.audit.chart.Serie) Test(org.junit.Test)

Example 4 with Serie

use of org.ff4j.audit.chart.Serie in project ff4j by ff4j.

the class AuditBeanTest method testTimeSerieChart.

@Test
public void testTimeSerieChart() {
    long top = System.currentTimeMillis();
    TimeSeriesChart t1 = new TimeSeriesChart(top - 100000, top + 100000, TimeUnit.MINUTES);
    new TimeSeriesChart(top - 100000, top + 100000, TimeUnit.HOURS);
    new TimeSeriesChart(top - 100000, top + 100000, TimeUnit.DAYS);
    new TimeSeriesChart(top - 100000, top + 100000, TimeUnit.SECONDS);
    t1.addEvent(new EventBuilder().name("f1").build());
    t1.addEvent(new EventBuilder().name("f2").build());
    Assert.assertNotNull(t1.getSdf());
    Assert.assertNotNull(t1.toString());
    TimeSeriesChart tsc1 = new TimeSeriesChart();
    tsc1.setSdf(new SimpleDateFormat("yyyy"));
    tsc1.setTimeSlots(new ArrayList<String>());
    tsc1.setSeries(new HashMap<String, Serie<Map<String, MutableHitCount>>>());
    Assert.assertNotNull(tsc1);
}
Also used : EventBuilder(org.ff4j.audit.EventBuilder) TimeSeriesChart(org.ff4j.audit.chart.TimeSeriesChart) SimpleDateFormat(java.text.SimpleDateFormat) Serie(org.ff4j.audit.chart.Serie) MutableHitCount(org.ff4j.audit.MutableHitCount) Test(org.junit.Test)

Example 5 with Serie

use of org.ff4j.audit.chart.Serie in project ff4j by ff4j.

the class AuditBeanTest method testBarChart.

@Test
public void testBarChart() {
    BarChart bc = new BarChart("Title");
    bc.setTitle("title2");
    Assert.assertEquals("title2", bc.getTitle());
    Serie<Integer> s1 = new Serie<Integer>("s1", 12);
    Serie<Integer> s2 = new Serie<Integer>("s2", 14);
    bc.getChartBars().add(s1);
    bc.getChartBars().add(s2);
    Assert.assertNotNull(bc.toString());
}
Also used : BarChart(org.ff4j.audit.chart.BarChart) Serie(org.ff4j.audit.chart.Serie) Test(org.junit.Test)

Aggregations

Serie (org.ff4j.audit.chart.Serie)6 Test (org.junit.Test)3 MutableHitCount (org.ff4j.audit.MutableHitCount)2 BarChart (org.ff4j.audit.chart.BarChart)2 PieChart (org.ff4j.audit.chart.PieChart)2 TimeSeriesChart (org.ff4j.audit.chart.TimeSeriesChart)2 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 Event (org.ff4j.audit.Event)1 EventBuilder (org.ff4j.audit.EventBuilder)1 EventSeries (org.ff4j.audit.EventSeries)1