Shiny Adventures

Shiny Adventures

of a software developer, @jhipster board member, @jugpaderborn organizer and father

Frederik Hahne

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:

PiwikTrackable.java
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:

BasePage.java
@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.

Recent Posts