/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale 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 Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ package org.squale.squalecommon.enterpriselayer.facade.stats; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.squale.jraf.commons.exception.JrafDaoException; import org.squale.jraf.commons.exception.JrafEnterpriseException; import org.squale.jraf.helper.PersistenceHelper; import org.squale.jraf.provider.persistence.hibernate.facade.FacadeHelper; import org.squale.jraf.spi.persistence.IPersistenceProvider; import org.squale.jraf.spi.persistence.ISession; import org.squale.squalecommon.daolayer.component.ApplicationDAOImpl; import org.squale.squalecommon.daolayer.profile.UserDAOImpl; import org.squale.squalecommon.daolayer.stats.SiteAndProfilStatsDICTDAOImpl; import org.squale.squalecommon.daolayer.stats.SiteStatsDICTDAOImpl; import org.squale.squalecommon.datatransfertobject.stats.ApplicationStatsDTO; import org.squale.squalecommon.datatransfertobject.stats.SetOfStatsDTO; import org.squale.squalecommon.datatransfertobject.transform.stats.ApplicationStatsTransformer; import org.squale.squalecommon.datatransfertobject.transform.stats.StatsTransform; import org.squale.squalecommon.enterpriselayer.businessobject.component.ApplicationBO; /** */ public class StatsFacade { /** * provider de persistence */ private static final IPersistenceProvider PERSISTENTPROVIDER = PersistenceHelper.getPersistenceProvider(); /** * @param pDaysForTerminatedAudit le nombre de jours max pour lesquels il doit y avoir au moins un audit r�ussi pour * que l'application soit active (sert pour les statistiques par application) * @param pDaysForAllAudits le nombre de jours d�fini pour compter les audits (sert pour les staistiques par * application) * @return l'objet regroupant les donn�es statistiques ainsi que les statistiques par application * @throws JrafEnterpriseException en cas d'�chec */ public static SetOfStatsDTO getStats( int pDaysForTerminatedAudit, int pDaysForAllAudits ) throws JrafEnterpriseException { SiteAndProfilStatsDICTDAOImpl siteAndProfilDAO = SiteAndProfilStatsDICTDAOImpl.getInstance(); SiteStatsDICTDAOImpl siteDAO = SiteStatsDICTDAOImpl.getInstance(); ISession session = null; SetOfStatsDTO result = null; try { session = PERSISTENTPROVIDER.getSession(); StatsTransform transform = new StatsTransform(); Collection siteAndProfilStats = siteAndProfilDAO.findAll( session ); Collection siteStats = siteDAO.findAll( session ); result = transform.bo2dto( siteAndProfilStats, siteStats ); // On r�cup�re les statistiques par application List applisStats = getApplicationsStats( pDaysForTerminatedAudit, pDaysForAllAudits ); // On ajoute au set des stats result.setListOfApplicationsStatsDTO( applisStats ); } catch ( JrafDaoException jde ) { FacadeHelper.convertException( jde, StatsFacade.class.getName() + ".getStats" ); } finally { FacadeHelper.closeSession( session, StatsFacade.class.getName() + ".getStats" ); } return result; } /** * R�cup�ration des statistiques par applications * * @param pDaysForTerminatedAudit le nombre de jours max pour lesquels il doit y avoir au moins un audit r�ussi pour * que l'application soit active * @param pDaysForAllAudits le nombre de jours d�fini pour compter les audits * @return la liste des staistiques de toutes les applications non supprim�e * @throws JrafEnterpriseException si erreur */ private static List getApplicationsStats( int pDaysForTerminatedAudit, int pDaysForAllAudits ) throws JrafEnterpriseException { // Initialisation ISession session = null; ApplicationDAOImpl appliDAO = ApplicationDAOImpl.getInstance(); UserDAOImpl userDAO = UserDAOImpl.getInstance(); List results = new ArrayList(); try { session = PERSISTENTPROVIDER.getSession(); // On r�cup�re toutes les applications non supprim�es tri�es par ordre alphab�tique List allApplis = appliDAO.findNotDeleted( session ); // On effectue la transformation en statistiques for ( int i = 0; i < allApplis.size(); i++ ) { ApplicationBO appliBO = (ApplicationBO) allApplis.get( i ); ApplicationStatsDTO statsDTO = ApplicationStatsTransformer.bo2Dto( appliBO, pDaysForTerminatedAudit, pDaysForAllAudits ); // Test if it's an archived application (= 0 user) if ( userDAO.countWhereApplication( session, appliBO.getId() ) == 0 ) { statsDTO.setArchived( true ); } results.add( statsDTO ); } } catch ( JrafDaoException jde ) { FacadeHelper.convertException( jde, StatsFacade.class.getName() + ".getApplicationsStats" ); } finally { FacadeHelper.closeSession( session, StatsFacade.class.getName() + ".getApplicationsStats" ); } return results; } }