Package org.dspace.app.xmlui.aspect.statisticsGoogleAnalytics

Source Code of org.dspace.app.xmlui.aspect.statisticsGoogleAnalytics.StatisticsGoogleAnalyticsTransformer

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.xmlui.aspect.statisticsGoogleAnalytics;

import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.log4j.Logger;

import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer;
import org.dspace.app.xmlui.utils.HandleUtil;
import org.dspace.app.xmlui.utils.UIException;
import org.dspace.app.xmlui.wing.Message;
import org.dspace.app.xmlui.wing.WingException;
import org.dspace.app.xmlui.wing.element.*;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.DSpaceObject;
import org.dspace.google.GoogleQueryManager;
import org.xml.sax.SAXException;

import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import com.google.api.services.analytics.model.GaData;

/**
* User: Robin Taylor
* Date: 11/07/2014
* Time: 13:23
*/

public class StatisticsGoogleAnalyticsTransformer extends AbstractDSpaceTransformer {

    private static final Message T_dspace_home = message("xmlui.general.dspace_home");
    private static final Message T_head_title = message("xmlui.statisticsGoogleAnalytics.title");
    private static final Message T_statisticsGoogleAnalytics_trail = message("xmlui.statisticsGoogleAnalytics.trail");

    private static final Message T_start_date = message("xmlui.statisticsGoogleAnalytics.dates.startDate");
    private static final Message T_end_date = message("xmlui.statisticsGoogleAnalytics.dates.endDate");
    private static final Message T_refresh = message("xmlui.statisticsGoogleAnalytics.dates.refresh");

    private static final Message T_page_views = message("xmlui.statisticsGoogleAnalytics.pageViews.title");
    private static final Message T_downloads = message("xmlui.statisticsGoogleAnalytics.downloads.title");

    private String startDateString = "";
    private String endDateString = "";
    private String handle;

    private static Logger log = Logger.getLogger(StatisticsGoogleAnalyticsTransformer.class);


    /**
     * Add a page title and trail links
     */
    public void addPageMeta(PageMeta pageMeta) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException {

        DSpaceObject dso = HandleUtil.obtainHandle(objectModel);

        pageMeta.addTrailLink(contextPath + "/",T_dspace_home);

        if(dso != null)
        {
            HandleUtil.buildHandleTrail(dso, pageMeta, contextPath, true);
        }

        pageMeta.addTrailLink(contextPath + "/handle" + (dso != null && dso.getHandle() != null ? "/" + dso.getHandle() : "/google-stats"), T_statisticsGoogleAnalytics_trail);

        pageMeta.addMetadata("title").addContent(T_head_title);
    }


    public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException {

        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");
        Calendar currentDate = Calendar.getInstance();
        String dateNow = formatter.format(currentDate.getTime());

        Calendar lastYearDate = Calendar.getInstance();
        lastYearDate.add(Calendar.YEAR, -1);
        String dateLastYear = formatter.format(lastYearDate.getTime());

        handle = HandleUtil.obtainHandle(objectModel).getHandle();

        Request request = ObjectModelHelper.getRequest(objectModel);

        if (request.getParameter("startDate") == null || request.getParameter("startDate").equals(""))
        {
            startDateString = dateLastYear;
        } else {
            startDateString = request.getParameter("startDate");
        }

        if (request.getParameter("endDate") == null || request.getParameter("endDate").equals(""))
        {
            endDateString = dateNow;
        } else {
            endDateString = request.getParameter("endDate");
        }

        Division main = body.addDivision("main");
        main.setHead(T_head_title);

        Division selectDate = main.addInteractiveDivision("selectDate", "", Division.METHOD_POST);
        List dates = selectDate.addList("dates", List.TYPE_FORM);

        Text startDate = dates.addItem().addText("startDate");
        startDate.setLabel(T_start_date);
        startDate.setValue(startDateString);

        Text endDate = dates.addItem().addText("endDate");
        endDate.setLabel(T_end_date);
        endDate.setValue(endDateString);

        dates.addItem().addButton("refresh").setValue(T_refresh);

        Division results = main.addDivision("results");
        getGAStuff(results);

    }

    private void getGAStuff(Division results) throws IOException, WingException {

        GoogleQueryManager gqm;
        GaData gaData;

        // Get the page views
        gqm = new GoogleQueryManager();
        gaData = gqm.getPageViews(startDateString, endDateString, handle);
        java.util.List<java.util.List<String>> rows = gaData.getRows();

        Table pageViews = results.addTable("pageViews", rows.size(), 2);
        pageViews.setHead(T_page_views);

        for (java.util.List<String> row : rows) {
            Row tableRow = pageViews.addRow();
            tableRow.addCellContent(row.get(0) + " / " + row.get(1));
            tableRow.addCellContent(row.get(2));
        }

        // Get the bitstream downloads
        gqm = new GoogleQueryManager();
        gaData = gqm.getBitstreamDownloads(startDateString, endDateString, handle);
        rows = gaData.getRows();

        Table bitstreamViews = results.addTable("downloads", rows.size(), 2);
        bitstreamViews.setHead(T_downloads);

        for (java.util.List<String> row : rows) {
            Row tableRow = bitstreamViews.addRow();
            tableRow.addCellContent(row.get(0) + " / " + row.get(1));
            tableRow.addCellContent(row.get(2));
        }
    }

}
TOP

Related Classes of org.dspace.app.xmlui.aspect.statisticsGoogleAnalytics.StatisticsGoogleAnalyticsTransformer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.