Package com.salas.bb.reports

Source Code of com.salas.bb.reports.ReportsAction$ReportDataProvider

// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2007 by R. Pito Salas
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this program;
// if not, write to the Free Software Foundation, Inc., 59 Temple Place,
// Suite 330, Boston, MA 02111-1307 USA
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: ReportsAction.java,v 1.8 2007/10/04 08:49:54 spyromus Exp $
//

package com.salas.bb.reports;

import com.salas.bb.core.GlobalController;
import com.salas.bb.core.GlobalModel;
import com.salas.bb.domain.GuidesSet;
import com.salas.bb.domain.IFeed;
import com.salas.bb.domain.IGuide;
import com.salas.bb.persistence.IPersistenceManager;
import com.salas.bb.persistence.IStatisticsManager;
import com.salas.bb.persistence.PersistenceException;
import com.salas.bb.persistence.PersistenceManagerConfig;
import com.salas.bb.persistence.domain.CountStats;
import com.salas.bb.persistence.domain.ReadStats;
import com.salas.bb.persistence.domain.VisitStats;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Reports action.
*/
public class ReportsAction extends AbstractAction
{
    /** Logger. */
    private static final Logger LOG = Logger.getLogger(ReportsAction.class.getName());

    /** Instance of the action. */
    private static ReportsAction instance;

    /** Hidden singleton constructor. */
    private ReportsAction()
    {
    }

    /**
     * Returns the report action instance.
     *
     * @return action instance.
     */
    public static synchronized ReportsAction getInstance()
    {
        if (instance == null) instance = new ReportsAction();
        return instance;
    }

    /**
     * Invoked when an action occurs.
     *
     * @param e event.
     */
    public void actionPerformed(ActionEvent e)
    {
        new ReportsDialog(GlobalController.SINGLETON.getMainFrame(),
            new ReportDataProvider(),
            new ClickCallback()).open();
    }

    /** Performs operation as requested by reports. */
    private class ClickCallback implements IClickCallback
    {
        /**
         * Invoked when a guide clicked in a report.
         *
         * @param guide guide.
         */
        public void guideClicked(IGuide guide)
        {
            if (guide == null) return;
            GlobalController.SINGLETON.selectGuide(guide, false);
        }

        /**
         * Invoked when a guide clicked in a report.
         *
         * @param id guide ID.
         */
        public void guideClicked(long id)
        {
            GlobalModel model = GlobalModel.SINGLETON;
            GuidesSet set = model.getGuidesSet();
            guideClicked(set.findGuideByID(id));
        }

        /**
         * Invoked when a feed clicked in a report.
         *
         * @param feed feed.
         */
        public void feedClicked(IFeed feed)
        {
            if (feed == null) return;
            IGuide[] guides = feed.getParentGuides();
            if (guides.length > 0)
            {
                GlobalController.SINGLETON.selectGuide(guides[0], false);
                GlobalController.SINGLETON.selectFeed(feed, true);
            }
        }

        /**
         * Invoked when a feed clicked in a report.
         *
         * @param id feed ID.
         */
        public void feedClicked(long id)
        {
            GlobalModel model = GlobalModel.SINGLETON;
            GuidesSet set = model.getGuidesSet();
            feedClicked(set.findFeedByID(id));
        }
    }

    /** Report data provider. */
    private class ReportDataProvider implements IReportDataProvider
    {
        private final IStatisticsManager sm;

        /**
         * Creates a provider.
         */
        public ReportDataProvider()
        {
            IPersistenceManager pm = PersistenceManagerConfig.getManager();
            sm = pm.getStatisticsManager();
        }

        /**
         * Returns the list of count stats for hours of a day.
         *
         * @return stats for hours of a day.
         */
        public CountStats[] statGetItemsReadPerHour()
        {
            CountStats[] stats;

            try
            {
                stats = sm.getItemsReadPerHour();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                stats = null;
            }

            return stats;
        }

        /**
         * Returns the list of count stats for days of a week.
         *
         * @return stats for days of a week.
         */
        public CountStats[] statGetItemsReadPerWeekday()
        {
            CountStats[] stats;

            try
            {
                stats = sm.getItemsReadPerWeekday();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                stats = null;
            }

            return stats;
        }

        /**
         * Returns the list of top most visited guides.
         *
         * @param max maximum number to return.
         *
         * @return records.
         */
        public List<VisitStats> statGetMostVisitedGuides(int max)
        {
            List<VisitStats> vs;

            try
            {
                vs = sm.getMostVisitedGuides(max);
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                vs = null;
            }

            return vs;
        }

        /**
         * Returns the list of top most visited feeds.
         *
         * @param max maximum number to return.
         *
         * @return records.
         */
        public List<VisitStats> statGetMostVisitedFeeds(int max)
        {
            List<VisitStats> vs;

            try
            {
                vs = sm.getMostVisitedFeeds(max);
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                vs = null;
            }

            return vs;
        }

        /**
         * Returns the list of read stats for all guides.
         *
         * @return guides stats.
         */
        public List<ReadStats> statGetGuidesReadStats()
        {
            List<ReadStats> rs;

            try
            {
                rs = sm.getGuidesReadStats();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                rs = null;
            }

            return rs;
        }

        /**
         * Returns the list of read stats for all feeds.
         *
         * @return feeds stats.
         */
        public List<ReadStats> statGetFeedsReadStats()
        {
            List<ReadStats> rs;

            try
            {
                rs = sm.getFeedsReadStats();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                rs = null;
            }

            return rs;
        }

        /**
         * Returns the list of pin stats for all guides.
         *
         * @return guides stats.
         */
        public List<ReadStats> statGetGuidesPinStats()
        {
            List<ReadStats> rs;

            try
            {
                rs = sm.getGuidesPinStats();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                rs = null;
            }

            return rs;
        }

        /**
         * Returns the list of pin stats for all feeds.
         *
         * @return feeds stats.
         */
        public List<ReadStats> statGetFeedsPinStats()
        {
            List<ReadStats> rs;

            try
            {
                rs = sm.getFeedsPinStats();
            } catch (PersistenceException e)
            {
                LOG.log(Level.SEVERE, "Failed to fetch stats.", e);
                rs = null;
            }

            return rs;
        }

        /**
         * Returns the set of guides that currently visible.
         *
         * @return guides.
         */
        public GuidesSet getGuidesSet()
        {
            return GlobalModel.SINGLETON.getGuidesSet();
        }

        /** Resets data. */
        public void reset()
        {
            sm.reset();
        }
    }
}
TOP

Related Classes of com.salas.bb.reports.ReportsAction$ReportDataProvider

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.