package com.github.wicketoracle.app.report.usage; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation; import org.apache.wicket.markup.html.panel.Panel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.wicketoracle.html.panel.dojo.chart.pie.Dojo2DPieChartPanel; import com.github.wicketoracle.html.panel.dojo.chart.pie.DojoChartTheme; import com.github.wicketoracle.oracle.dao.charting.ChartDatum; import com.github.wicketoracle.session.Session; /** * Reusable dashboard demonstrating some of the dojo charting tools * * @author Andrew Hall * */ @AuthorizeInstantiation( RequiredRoles.ROLE_USAGE_DATA_REPORT ) public final class UsageDataPanel extends Panel { private static final long serialVersionUID = 1L; private static final Logger LOGGER = LoggerFactory.getLogger( UsageDataPanel.class ); private Dojo2DPieChartPanel top10LoginPieChartPanel = null; private Dojo2DPieChartPanel loginsPerHourPieChartPanel = null; private final int defaultPanelWidth = 250; private final int defaultPanelHeight = 250; private final int defaultRadius = 80; private final int defaultLabelOffset = -30; /** * * @param pId */ public UsageDataPanel( final String pId ) { super( pId ); /* retrieve the drop down choice data */ final Session session = ( Session ) getSession(); UsageReportDAO dataService = null; Map<String , List<ChartDatum>> chartData = null; try { dataService = new UsageReportDAO( session.getUsername() , session.getPassword() ); chartData = dataService.getChartData(); } catch ( SQLException sqle ) { LOGGER.error ( "SQL Exception when retrieving chart data for the usage data report panel -> {}; error code -> {}; sql state -> {}" , new Object [ ] { sqle.getMessage() , sqle.getErrorCode() , sqle.getSQLState() } ); error( getLocalizer().getString( "MessageUnexpectedError" , this ) ); } finally { if ( ! dataService.closeConnection() ) { error( getLocalizer().getString( "MessageUnexpectedError" , this ) ); } } top10LoginPieChartPanel = new Dojo2DPieChartPanel( "PanelTop10LoginPieChart" , defaultPanelWidth , defaultPanelHeight , DojoChartTheme.PlotKitRed , true , true , defaultRadius , defaultLabelOffset , chartData.get( "TOP_10_USER_LOGINS" ) ); add( top10LoginPieChartPanel ); loginsPerHourPieChartPanel = new Dojo2DPieChartPanel( "PanelLoginsPerHourPieChart" , defaultPanelWidth , defaultPanelHeight , DojoChartTheme.PlotKitRed , true , true , defaultRadius , defaultLabelOffset , chartData.get( "LOGINS_PER_HOUR" ) ); add( loginsPerHourPieChartPanel ); } }