Piwik Javatracker
Jeder kennt google analytics und vielleicht auch die freie alternative Piwik. Die Einbindung passiert normalerweiße über ein kleines JavaScript Snippet, sodass bei jedem Seitenaufruf die Piwik-Instanz informiert wird. Bereits vor längerer Zeit stellte sich das Problem, wie man eine Wicket Webanwendung an Piwik anbindet.
Mein erster Gedanke, einfach das JS Snippet als Resource in jede Seite einzubinden hat leider nicht geklappt, Piwik wurde nicht über Seitenbesuche informiert. Doch zum Glück gibt es eine Java-Implementierung der Tracking Api. Das ganze habe ich dann folgendermaßen eingebunden:
Jede Page
implementiert das Interface PiwikTrackable
:
public interface PiwikTrackable {
void trackPageVisit();
void trackPageVisit(String title);
}
In der BasePage
kann man nun ganz einfach zumindest einen Besuch der entsprechenden Seite tracken, indem man einfach die implementierte Methode trackPageVisit(String title)
aufruft:
@Override
public void trackPageVisit(String title) {
HttpServletRequest servletReq = (HttpServletRequest) getRequest().getContainerRequest();
SimplePiwikTracker spwt = new SimplePiwikTracker(1, "url-zu-deiner-piwik-installation", servletReq);
spwt.sendRequest(spwt.getPageTrackURL(title));
}
Diese Methode hat einen Nachteil, es wird tatsächlich nur der Besuch protokolliert. Wenn mehr Informationen (z.B. verwendeter Browser) benötigt werden, dann müssen diese Informationen zuerst ausgelesen werden. Mit Wicket geht es am einfachsten, wenn man sich an die Dokumentation zu ClientProperties hält und dann diese Informationen in den PiwikRequest
schreibt.