package org.bubblecloud.ilves.site;
import com.vaadin.annotations.JavaScript;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.server.AbstractJavaScriptExtension;
import com.vaadin.ui.UI;
import org.apache.commons.lang.StringUtils;
@JavaScript("analytics_connector.js")
public class SiteAnalyser extends AbstractJavaScriptExtension implements ViewChangeListener {
private String gaTrackingId;
public SiteAnalyser(UI ui, String gaTrackingId) {
this.gaTrackingId = gaTrackingId;
if (!StringUtils.isEmpty(gaTrackingId)) {
extend(ui);
pushCommand(new String[]{"_setAccount", gaTrackingId});
}
}
public void trackPageView(String name) {
if (!StringUtils.isEmpty(gaTrackingId)) {
pushCommand(new String[]{"_trackPageview", name});
}
}
private void pushCommand(final String[] commandAndArguments) {
if (!StringUtils.isEmpty(gaTrackingId)) {
// Cast to Object to use Object[] commandAndArguments as the first
// varargs argument instead of as the full varargs argument array.
callFunction("pushCommand", commandAndArguments);
}
}
@Override
public boolean beforeViewChange(ViewChangeEvent viewChangeEvent) {
return true;
}
@Override
public void afterViewChange(ViewChangeEvent viewChangeEvent) {
trackPageView(viewChangeEvent.getViewName());
}
}