Ver a proveniência

WIP. traffic analytics app

tags/v0.4.0
Jonathan Cobb há 5 anos
ascendente
cometimento
53ae9e193d
6 ficheiros alterados com 21 adições e 9 eliminações
  1. +1
    -1
      bubble-server/src/main/java/bubble/app/analytics/TrafficAnalyticsApp.java
  2. +3
    -0
      bubble-server/src/main/java/bubble/app/analytics/TrafficAnalyticsData.java
  3. +4
    -0
      bubble-server/src/main/java/bubble/dao/app/AppDataDAO.java
  4. +2
    -2
      bubble-server/src/main/java/bubble/rule/analytics/TrafficAnalytics.java
  5. +10
    -5
      bubble-server/src/main/resources/models/apps/analytics/bubbleApp_analytics.json
  6. +1
    -1
      utils/cobbzilla-wizard

+ 1
- 1
bubble-server/src/main/java/bubble/app/analytics/TrafficAnalyticsApp.java Ver ficheiro

@@ -53,7 +53,7 @@ public class TrafficAnalyticsApp extends AppDataDriverBase {
b = new StringBuilder();
for (int i = 0; i< limit; i++) {
if (b.length() > 0) b.append(ILIKE_SEP);
b.append(PCT + FQDN_SEP).append(DATE_FORMAT_YYYY_MM_DD_HH.print(now - HOURS.toMillis(i))).append("-").append(PCT);
b.append(PCT + FQDN_SEP).append(DATE_FORMAT_YYYY_MM_DD_HH.print(now - HOURS.toMillis(i))).append(PCT);
}

return SearchBoundComparison.like_any.name() + OP_SEP + b.toString();


+ 3
- 0
bubble-server/src/main/java/bubble/app/analytics/TrafficAnalyticsData.java Ver ficheiro

@@ -1,6 +1,7 @@
package bubble.app.analytics;

import bubble.model.app.AppData;
import bubble.model.device.Device;
import lombok.Getter;
import lombok.Setter;

@@ -14,6 +15,8 @@ public class TrafficAnalyticsData extends AppData {
final String[] parts = getKey().split(FQDN_SEP);
this.fqdn = parts[0];
this.timeInterval = parts[1];
final Device device = data.getRelated().entity(Device.class);
if (device != null) setDevice(device.getName());
}

@Getter @Setter private String fqdn;


+ 4
- 0
bubble-server/src/main/java/bubble/dao/app/AppDataDAO.java Ver ficheiro

@@ -36,6 +36,10 @@ public class AppDataDAO extends AppTemplateEntityDAO<AppData> {
return filterExpired(findByUniqueFields("app", app, "site", site, "key", key));
}

public AppData findByAppAndSiteAndKeyAndDevice(String app, String site, String key, String device) {
return filterExpired(findByUniqueFields("app", app, "site", site, "key", key, "device", device));
}

public List<AppData> findByAccountAndAppAndAndKey(String account, String app, String key) {
return filterExpired(findByFields("account", account, "app", app, "key", key));
}


+ 2
- 2
bubble-server/src/main/java/bubble/rule/analytics/TrafficAnalytics.java Ver ficheiro

@@ -40,7 +40,7 @@ public class TrafficAnalytics extends AbstractAppRuleDriver {
// if the underlying db driver gets into an upset state because of the concurrent updates. We will cross
// that bridge when we get to it.
private synchronized void incr(Account account, Device device, String app, String site, String key) {
final AppData found = appDataDAO.findByAppAndSiteAndKey(app, site, key);
final AppData found = appDataDAO.findByAppAndSiteAndKeyAndDevice(app, site, key, device == null ? null : device.getUuid());
if (found == null) {
appDataDAO.create(new AppData()
.setApp(app)
@@ -48,7 +48,7 @@ public class TrafficAnalytics extends AbstractAppRuleDriver {
.setMatcher(matcher.getUuid())
.setKey(key)
.setAccount(account.getUuid())
.setDevice(device.getUuid())
.setDevice(device == null ? null : device.getUuid())
.setExpiration(now() + ANALYTICS_EXPIRATION)
.setData("1"));
} else {


+ 10
- 5
bubble-server/src/main/resources/models/apps/analytics/bubbleApp_analytics.json Ver ficheiro

@@ -8,12 +8,15 @@
"driverClass": "bubble.app.analytics.TrafficAnalyticsApp",
"presentation": "app",
"fields": [
{"name": "ctime"},
{"name": "URL"},
{"name": "timeInterval"},
{"name": "fqdn"},
{"name": "device"},
{"name": "count"}
{"name": "data"}
],
"params": [
{"name": "site", "required": false},
{"name": "device", "required": false}
],
"params": [{"name": "site", "required": false}],
"views": [
{"name": "last_24_hours"},
{"name": "last_7_days"},
@@ -38,10 +41,12 @@
"messages": [
{"name": "name", "value": "Traffic Analytics"},
{"name": "description", "value": "Traffic analytics for your Bubble. Manage block lists."},
{"name": "field.key", "value": "URL"},
{"name": "field.timeInterval", "value": "When"},
{"name": "field.fqdn", "value": "URL"},
{"name": "field.device", "value": "Device"},
{"name": "field.data", "value": "Count"},
{"name": "param.site", "value": "Site"},
{"name": "param.device", "value": "Device"},
{"name": "view.last_24_hours", "value": "Last 24 Hours"},
{"name": "view.last_7_days", "value": "Last 7 Days"},
{"name": "view.last_30_days", "value": "Last 30 Days"}


+ 1
- 1
utils/cobbzilla-wizard

@@ -1 +1 @@
Subproject commit f28baed0eff9e4ddad9bdbf4560f517bd2ad6d83
Subproject commit 516376d0591bc89cdb02061604f6161223fc583b

Carregando…
Cancelar
Guardar