public List<StatisticReportRecordVO> getStatisticReportRecord( String reportDefinitionId, String objectId, AccountUserVO accountUser) throws Exception { if (reportDefinitionId == null || objectId == null) { throw new IllegalArgumentException("Arguments are null!"); } /* * Properties repDefProps = new Properties(); URL url = * SimpleStatistics.class.getClassLoader().getResource(REPORTDEFINITION_PROPERTIES_FILE); if * (url == null) { throw new FileNotFoundException(REPORTDEFINITION_PROPERTIES_FILE); } * repDefProps.load(new FileInputStream(new File(url.toURI()))); */ // String repDefId = repDefProps.getProperty(reportDefinitionType); // EntityManager em = emf.createEntityManager(); // String repDefId = // ReportDefinitionStorage.getInstance().getReportDefinitionMap().get(reportDefinitionType); if (reportDefinitionId == null) throw new Exception("Reportdefinition does not exist: " + reportDefinitionId); StatisticReportParamsVO repParams = new StatisticReportParamsVO(); repParams.setReportDefinitionId(reportDefinitionId); StatisticReportRecordParamVO param = new StatisticReportRecordParamVO( "object_id", new StatisticReportRecordStringParamValueVO(objectId)); repParams.getParamList().add(param); String xmlParams = xmlTransforming.transformToStatisticReportParameters(repParams); ReportHandler repHandler; if (accountUser == null || accountUser.getHandle() == null) repHandler = ServiceLocator.getReportHandler(); else repHandler = ServiceLocator.getReportHandler(accountUser.getHandle()); String xmlReport = repHandler.retrieve(xmlParams); List<StatisticReportRecordVO> reportRecordList = xmlTransforming.transformToStatisticReportRecordList(xmlReport); return reportRecordList; }
/** {@inheritDoc} */ public void initReportDefinitionsInFramework() { try { logger.info("Initializing statistic aggregation definitions in framework database"); AggregationDefinitionHandler adh = ServiceLocator.getAggregationDefinitionHandler(AdminHelper.getAdminUserHandle()); String srwResponseXml = adh.retrieveAggregationDefinitions(new HashMap<String, String[]>()); List<AggregationDefinitionVO> aggList = xmlTransforming.transformToStatisticAggregationDefinitionList(srwResponseXml); String aggregationTableName = null; for (AggregationDefinitionVO aggDef : aggList) { if (aggDef.getName().equals("pubman item statistics without version")) { logger.info( "Pubman statistic aggregation definition already exists with id " + aggDef.getObjectId()); aggregationTableName = aggDef.getAggregationTables().get(0).getName(); logger.info("Pubman aggregated table name:" + aggregationTableName); break; } } // No aggregation found, create one if (aggregationTableName == null) { logger.info("No pubman aggregation definition found, creating one"); String aggregationDefinitionXml = ResourceUtil.getResourceAsString( "pubman_object_stats_aggregation.xml", SimpleStatistics.class.getClassLoader()); String createdAggDefXml = adh.create(aggregationDefinitionXml); AggregationDefinitionVO aggCreated = xmlTransforming.transformToStatisticAggregationDefinition(createdAggDefXml); logger.info("Pubman aggregation definition created with id " + aggCreated.getObjectId()); aggregationTableName = aggCreated.getAggregationTables().get(0).getName(); logger.info("Pubman aggregated table name:" + aggregationTableName); } logger.info("Initializing statistical report definitions in framework database"); ReportDefinitionHandler repDefHandler = ServiceLocator.getReportDefinitionHandler(AdminHelper.getAdminUserHandle()); // EntityManager em = emf.createEntityManager(); String repDefFrameworkListXML = repDefHandler.retrieveReportDefinitions(new HashMap<String, String[]>()); List<StatisticReportDefinitionVO> repDefFrameworkList = xmlTransforming.transformToStatisticReportDefinitionList(repDefFrameworkListXML); List<StatisticReportDefinitionVO> repDefFileList = retrieveReportDefinitionListFromFile(); // Creating a Hash Map with ReportDefinitions from Framework and sql as key HashMap<String, StatisticReportDefinitionVO> repDefFrameworkMap = new HashMap<String, StatisticReportDefinitionVO>(); for (StatisticReportDefinitionVO repDef : repDefFrameworkList) { repDefFrameworkMap.put(repDef.getSql(), repDef); } for (StatisticReportDefinitionVO repDefFile : repDefFileList) { String sql = repDefFile.getSql().replaceAll("pubman_object_stats", aggregationTableName); StatisticReportDefinitionVO repDefFW = repDefFrameworkMap.get(sql); String repDefObjectId; // Report Definition already existing if (repDefFW != null) { // set Property // Map<String, String> reportDefMap = // ReportDefinitionStorage.getInstance().getReportDefinitionMap(); // reportDefMap.put(repDefFW.getSql(), repDefFW.getObjectId()); repDefObjectId = repDefFW.getObjectId(); logger.info( "Report Definition already existing: " + repDefFW.getObjectId() + " --- " + repDefFW.getSql()); } // Report Definition does not exist yet else { // create and set String repDefFileXML = xmlTransforming .transformToStatisticReportDefinition(repDefFile) .replaceAll("pubman_object_stats", aggregationTableName); ; String repDefFWXMLNew = repDefHandler.create(repDefFileXML); StatisticReportDefinitionVO repDefFWNew = xmlTransforming.transformToStatisticReportDefinition(repDefFWXMLNew); // ReportDefinitionStorage.getInstance().getReportDefinitionMap().put(repDefFWNew.getSql(), // repDefFWNew.getObjectId()); repDefObjectId = repDefFWNew.getObjectId(); logger.info( "Created new report definition and added to Map: " + repDefFWNew.getObjectId() + " --- " + repDefFWNew.getSql()); } if (repDefFile.getName().equals("Item retrievals, all users")) { REPORTDEFINITION_NUMBER_OF_ITEM_RETRIEVALS_ALL_USERS = repDefObjectId; } else if (repDefFile.getName().equals("File downloads per Item, all users")) { REPORTDEFINITION_FILE_DOWNLOADS_PER_ITEM_ALL_USERS = repDefObjectId; } else if (repDefFile.getName().equals("File downloads, all users")) { REPORTDEFINITION_FILE_DOWNLOADS_PER_FILE_ALL_USERS = repDefObjectId; } else if (repDefFile.getName().equals("Item retrievals, anonymous users")) { REPORTDEFINITION_NUMBER_OF_ITEM_RETRIEVALS_ANONYMOUS = repDefObjectId; } else if (repDefFile.getName().equals("File downloads per Item, anonymous users")) { REPORTDEFINITION_FILE_DOWNLOADS_PER_ITEM_ANONYMOUS = repDefObjectId; } else if (repDefFile.getName().equals("File downloads, anonymous users")) { REPORTDEFINITION_FILE_DOWNLOADS_PER_FILE_ANONYMOUS = repDefObjectId; } } /* * logger.info( ReportDefinitionStorage.getInstance().getReportDefinitionMap().size() * +" Statistic report definitions are initialized! "); */ } catch (Exception e) { logger.error( "Statistic report definitions could not be initialized! Statistic system may not work properly. ", e); } }