(Chris Yates) SF Patch #1888652 Statistics Rewritten In Java

git-svn-id: http://scm.dspace.org/svn/repo/branches/dspace-1_5_x@2630 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Stuart Lewis
2008-02-10 19:09:14 +00:00
parent 1050b4f54f
commit be03336a63
10 changed files with 464 additions and 442 deletions

View File

@@ -0,0 +1,394 @@
/*
* CreateStatReport.java
*
* Date: $Date: 2008-01-08
*
* Copyright (c) 2002-2008, Hewlett-Packard Company and Massachusetts
* Institute of Technology. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of the Hewlett-Packard Company nor the name of the
* Massachusetts Institute of Technology nor the names of their
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*/
package org.dspace.app.statistics;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.PosixParser;
import org.dspace.core.Context;
import org.dspace.core.ConfigurationManager;
/**
* This class allows the running of the DSpace statistic tools
*
* Usage: java CreateStatReport -r <statistic to run>
* Available: <stat-initial> <stat-general> <stat-monthly> <stat-report-initial>
* <stat-report-general> <stat-report-monthly>
*
* @author Chris Yates
*
*/
public class CreateStatReport {
/**Current date and time*/
private static Calendar calendar = null;
/**Reporting start date and time*/
private static Calendar reportStartDate = null;
/**Path of log directory*/
private static String outputLogDirectory = null;
/**Path of reporting directory*/
private static String outputReportDirectory = null;
/**File suffix for log files*/
private static String outputSuffix = ".dat";
/**User context*/
private static Context context;
/*
* Main method to be run from the command line executes individual statistic methods
*
* Usage: java CreateStatReport -r <statistic to run>
*/
public static void main(String[] argv) throws Exception {
calendar = new GregorianCalendar();
reportStartDate = new GregorianCalendar(2007, 0, 1); //Date to begin initial reports from
// create context as super user
context = new Context();
context.setIgnoreAuthorization(true);
//get paths to directories
outputLogDirectory = ConfigurationManager.getProperty("log.dir") + File.separator;
outputReportDirectory = ConfigurationManager.getProperty("report.dir") + File.separator;
//read in command line variable to determine which statistic to run
CommandLineParser parser = new PosixParser();
Options options = new Options();
options.addOption("r", "report", true, "report");
CommandLine line = parser.parse(options, argv);
String statAction = null;
if(line.hasOption('r'))
{
statAction = line.getOptionValue('r');
}
if (statAction == null) {
usage();
System.exit(0);
}
//call appropriate statistics method
if(statAction.equals("stat-monthly")) {
statMonthly();
}
if(statAction.equals("stat-general")) {
statGeneral();
}
if(statAction.equals("stat-initial")) {
statInitial();
}
if(statAction.equals("stat-report-general")) {
statReportGeneral();
}
if(statAction.equals("stat-report-initial")) {
statReportInitial();
}
if(statAction.equals("stat-report-monthly")) {
statReportMonthly();
}
}
/**
* This method generates a report from the first of the current month to the end of the current month.
*
* @throws Exception
*/
private static void statMonthly() throws Exception {
//Output Prefix
String outputPrefix = "dspace-log-monthly-";
// set up our command line variables
String myLogDir = null;
String myFileTemplate = null;
String myConfigFile = null;
StringBuffer myOutFile = null;
Date myStartDate = null;
Date myEndDate = null;
boolean myLookUp = false;
Calendar start = new GregorianCalendar( calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
myStartDate = start.getTime();
Calendar end = new GregorianCalendar( calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
myEndDate = end.getTime();
myOutFile = new StringBuffer(outputLogDirectory);
myOutFile.append(outputPrefix);
myOutFile.append(calendar.get(Calendar.YEAR));
myOutFile.append("-");
myOutFile.append(calendar.get(Calendar.MONTH)+1);
myOutFile.append(outputSuffix);
LogAnalyser.processLogs(context, myLogDir, myFileTemplate, myConfigFile, myOutFile.toString(), myStartDate, myEndDate, myLookUp);
}
/**
* This method generates a full report based on the full log period
*
* @throws Exception
*/
private static void statGeneral() throws Exception {
//Output Prefix
String outputPrefix = "dspace-log-general-";
// set up our command line variables
String myLogDir = null;
String myFileTemplate = null;
String myConfigFile = null;
StringBuffer myOutFile = null;
Date myStartDate = null;
Date myEndDate = null;
boolean myLookUp = false;
myOutFile = new StringBuffer(outputLogDirectory);
myOutFile.append(outputPrefix);
myOutFile.append(calendar.get(Calendar.YEAR));
myOutFile.append("-");
myOutFile.append(calendar.get(Calendar.MONTH)+1);
myOutFile.append("-");
myOutFile.append(calendar.get(Calendar.DAY_OF_MONTH));
myOutFile.append(outputSuffix);
LogAnalyser.processLogs(context, myLogDir, myFileTemplate, myConfigFile, myOutFile.toString(), myStartDate, myEndDate, myLookUp);
}
/**
* This script starts from the year and month specified below and loops each month until the current month
* generating a monthly aggregation files for the DStat system.
*
* @throws Exception
*/
private static void statInitial() throws Exception {
//Output Prefix
String outputPrefix = "dspace-log-monthly-";
// set up our command line variables
String myLogDir = null;
String myFileTemplate = null;
String myConfigFile = null;
StringBuffer myOutFile = null;
Date myStartDate = null;
Date myEndDate = null;
boolean myLookUp = false;
Calendar reportEndDate = new GregorianCalendar( calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
while(reportStartDate.before(reportEndDate)) {
Calendar start = new GregorianCalendar( reportStartDate.get(Calendar.YEAR),
reportStartDate.get(Calendar.MONTH),
reportStartDate.getActualMinimum(Calendar.DAY_OF_MONTH));
myStartDate = start.getTime();
Calendar end = new GregorianCalendar( reportStartDate.get(Calendar.YEAR),
reportStartDate.get(Calendar.MONTH),
reportStartDate.getActualMaximum(Calendar.DAY_OF_MONTH));
myEndDate = end.getTime();
myOutFile = new StringBuffer(outputLogDirectory);
myOutFile.append(outputPrefix);
myOutFile.append(reportStartDate.get(Calendar.YEAR));
myOutFile.append("-");
myOutFile.append(reportStartDate.get(Calendar.MONTH)+1);
myOutFile.append(outputSuffix);
LogAnalyser.processLogs(context, myLogDir, myFileTemplate, myConfigFile, myOutFile.toString(), myStartDate, myEndDate, myLookUp);
reportStartDate.add(Calendar.MONTH, 1);
}
}
/**
* This method generates a full report based on the full log period
*
* @throws Exception
*/
private static void statReportGeneral() throws Exception {
//Prefix
String inputPrefix = "dspace-log-general-";
String outputPrefix = "report-general-";
String myFormat = "html";
StringBuffer myInput = null;
StringBuffer myOutput = null;
String myMap = null;
myInput = new StringBuffer(outputLogDirectory);
myInput.append(inputPrefix);
myInput.append(calendar.get(Calendar.YEAR));
myInput.append("-");
myInput.append(calendar.get(Calendar.MONTH)+1);
myInput.append("-");
myInput.append(calendar.get(Calendar.DAY_OF_MONTH));
myInput.append(outputSuffix);
myOutput = new StringBuffer(outputReportDirectory);
myOutput.append(outputPrefix);
myOutput.append(calendar.get(Calendar.YEAR));
myOutput.append("-");
myOutput.append(calendar.get(Calendar.MONTH)+1);
myOutput.append("-");
myOutput.append(calendar.get(Calendar.DAY_OF_MONTH));
myOutput.append(".");
myOutput.append(myFormat);
ReportGenerator.processReport(context, myFormat, myInput.toString(), myOutput.toString(), myMap);
}
/**
* This script starts from the year and month specified below and loops each month until the current month
* generating monthly reports from the DStat aggregation files
*
* @throws Exception
*/
private static void statReportInitial() throws Exception {
//Prefix
String inputPrefix = "dspace-log-monthly-";
String outputPrefix = "report-";
String myFormat = "html";
StringBuffer myInput = null;
StringBuffer myOutput = null;
String myMap = null;
Calendar reportEndDate = new GregorianCalendar( calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
while(reportStartDate.before(reportEndDate)) {
myInput = new StringBuffer(outputLogDirectory);
myInput.append(inputPrefix);
myInput.append(reportStartDate.get(Calendar.YEAR));
myInput.append("-");
myInput.append(reportStartDate.get(Calendar.MONTH)+1);
myInput.append(outputSuffix);
myOutput = new StringBuffer(outputReportDirectory);
myOutput.append(outputPrefix);
myOutput.append(reportStartDate.get(Calendar.YEAR));
myOutput.append("-");
myOutput.append(reportStartDate.get(Calendar.MONTH)+1);
myOutput.append(".");
myOutput.append(myFormat);
ReportGenerator.processReport(context, myFormat, myInput.toString(), myOutput.toString(), myMap);
reportStartDate.add(Calendar.MONTH, 1);
}
}
/**
* This method generates a report from the aggregation files which have been run for the most recent month
*
* @throws Exception
*/
private static void statReportMonthly() throws Exception
{
//Prefix
String inputPrefix = "dspace-log-monthly-";
String outputPrefix = "report-";
String myFormat = "html";
StringBuffer myInput = null;
StringBuffer myOutput = null;
String myMap = null;
myInput = new StringBuffer(outputLogDirectory);
myInput.append(inputPrefix);
myInput.append(calendar.get(Calendar.YEAR));
myInput.append("-");
myInput.append(calendar.get(Calendar.MONTH)+1);
myInput.append(outputSuffix);
myOutput = new StringBuffer(outputReportDirectory);
myOutput.append(outputPrefix);
myOutput.append(calendar.get(Calendar.YEAR));
myOutput.append("-");
myOutput.append(calendar.get(Calendar.MONTH)+1);
myOutput.append(".");
myOutput.append(myFormat);
ReportGenerator.processReport(context, myFormat, myInput.toString(), myOutput.toString(), myMap);
}
/*
* Output the usage information
*/
private static void usage() throws Exception {
System.out.println("Usage: java CreateStatReport -r <statistic to run>");
System.out.println("Available: <stat-initial> <stat-general> <stat-monthly> <stat-report-initial> <stat-report-general> <stat-report-monthly>");
return;
}
}

View File

@@ -100,19 +100,19 @@ public class LogAnalyser
/////////////////
/** aggregator for all actions performed in the system */
private static Map actionAggregator = new HashMap();
private static Map actionAggregator;
/** aggregator for all searches performed */
private static Map searchAggregator = new HashMap();
private static Map searchAggregator;
/** aggregator for user logins */
private static Map userAggregator = new HashMap();
private static Map userAggregator;
/** aggregator for item views */
private static Map itemAggregator = new HashMap();
private static Map itemAggregator;
/** aggregator for current archive state statistics */
private static Map archiveStats = new HashMap();
private static Map archiveStats;
/** warning counter */
private static int warnCount = 0;
@@ -125,19 +125,19 @@ public class LogAnalyser
//////////////////
/** list of actions to be included in the general summary */
private static List generalSummary = new ArrayList();
private static List generalSummary;
/** list of words not to be aggregated */
private static List excludeWords = new ArrayList();
private static List excludeWords;
/** list of search types to be ignored, such as "author:" */
private static List excludeTypes = new ArrayList();
private static List excludeTypes;
/** list of characters to be excluded */
private static List excludeChars = new ArrayList();
private static List excludeChars;
/** list of item types to be reported on in the current state */
private static List itemTypes = new ArrayList();
private static List itemTypes;
/** bottom limit to output for search word analysis */
private static int searchFloor;
@@ -350,10 +350,21 @@ public class LogAnalyser
// together in a single aggregating object
// if the timer has not yet been started, then start it
if (startTime != null)
{
startTime = new GregorianCalendar();
}
//instantiate aggregators
actionAggregator = new HashMap();
searchAggregator = new HashMap();
userAggregator = new HashMap();
itemAggregator = new HashMap();
archiveStats = new HashMap();
//instantiate lists
generalSummary = new ArrayList();
excludeWords = new ArrayList();
excludeTypes = new ArrayList();
excludeChars = new ArrayList();
itemTypes = new ArrayList();
// set the parameters for this analysis
setParameters(myLogDir, myFileTemplate, myConfigFile, myOutFile, myStartDate, myEndDate, myLookUp);
@@ -767,6 +778,7 @@ public class LogAnalyser
{
BufferedWriter out = new BufferedWriter(new FileWriter(outFile));
out.write(summary.toString());
out.flush();
out.close();
}
catch (IOException e)

View File

@@ -88,19 +88,19 @@ public class ReportGenerator
/////////////////
/** aggregator for all actions performed in the system */
private static Map actionAggregator = new HashMap();
private static Map actionAggregator;
/** aggregator for all searches performed */
private static Map searchAggregator = new HashMap();
private static Map searchAggregator;
/** aggregator for user logins */
private static Map userAggregator = new HashMap();
private static Map userAggregator;
/** aggregator for item views */
private static Map itemAggregator = new HashMap();
private static Map itemAggregator;
/** aggregator for current archive state statistics */
private static Map archiveStats = new HashMap();
private static Map archiveStats;
//////////////////
@@ -147,7 +147,7 @@ public class ReportGenerator
private static int warnings;
/** the list of results to be displayed in the general summary */
private static List generalSummary = new ArrayList();
private static List generalSummary;
//////////////////
// regular expressions
@@ -164,7 +164,7 @@ public class ReportGenerator
private static Calendar startTime = null;
/** a map from log file action to human readable action */
private static Map actionMap = new HashMap();
private static Map actionMap = null;
/////////////////
// report generator config data
@@ -251,6 +251,17 @@ public class ReportGenerator
{
startTime = new GregorianCalendar();
/** instantiate aggregators */
actionAggregator = new HashMap();
searchAggregator = new HashMap();
userAggregator = new HashMap();
itemAggregator = new HashMap();
archiveStats = new HashMap();
actionMap = new HashMap();
/** instantite lists */
generalSummary = new ArrayList();
// set the parameters for this analysis
setParameters(myFormat, myInput, myOutput, myMap);

View File

@@ -73,10 +73,11 @@ SF Patch 1794700 Bug fix for stat-monthly and stat-report-monthly
- SF Patch #1799575 New EPersonConsumer event consumer
- SF Patch #1642563 bin/update-handle-prefix rewritten in Java
(Chris yates)
(Chris Yates)
- SF Patch #1724330 Removes "null" being displayed in community-home.jsp
- SF Patch #1763535 Alert DSpace administrator of new user registration
- SF Patch #1759438 Multilingualism Language Switch - DSpace Header
- SF Patch #1888652 Statistics Rewritten In Java
(Robert Tansley / Stuart Lewis)
- SF Patch #1587225 Google and html sitemap generator

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -42,45 +42,9 @@
###########################################################################
# This script generates a full report based on the full log period
#
# To customise for your own use change the $out_prefix, $out_suffix,
# $dsrun and $out_directory variables below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which is below under $general
#
# For more information on using the LogAnalyser, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
###########################################################################
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
my $this_year = $year + 1900;
my $this_month = $month + 1;
# Details used
######################################################
$out_prefix = "dspace-log-general-";
$out_suffix = ".dat";
$dsrun = "/dspace/bin/dsrun";
$out_directory = "/dspace/log/";
######################################################
$execute = "$dsrun org.dspace.app.statistics.LogAnalyser -out $out_directory$out_prefix$this_year-$this_month-$day$out_suffix";
$status = system($execute);
exit($status);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-general

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -44,113 +44,9 @@
# This script starts from the year and month specified below and works
# forward until the end of the current month, generating monthly aggregation
# files for the DStat system.
#
# To customise for your own use change the $out_prefix, $out_suffix,
# $start_year, $start_month, $dsrun and $out_directory variables below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which appears near the bottom of the page, and is
# commented with "# The command to generate the report"
#
# For more information on using the LogAnalyser, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
###########################################################################
use POSIX qw(floor);
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
my $start;
my $end;
my $out;
my $i;
my $no_months;
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
my $out_prefix;
my $out_suffix;
# Details used
################################################
$out_prefix = "dspace-log-monthly-";
$out_suffix = ".dat";
$start_year = "2005";
$start_month = "1";
$dsrun = "/dspace/bin/dsrun";
$out_directory = "/dspace/log/";
################################################
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
# set up the variables to use in the loop
# number of years after the current year (will mostly be negative)
# <current year> = (<perl year> + 1900)
# <start year offset> = <start year> - <current year>
$year_offset = $start_year - ($year + 1900);
# total number of months between now and the start date (negated to be positive in general)
# <months in year offset> = |<start year offset>| * 12
# <difference in current year months> = (<current perl month> + 1) - <start month>
# <total number of months> = <months in year offset> + <difference in current year months>
# we use -1 to make <start year offset> positive since it should always be negative
$no_months = (-1 * ($year_offset * 12)) + (($month + 1) - $start_month);
# start day of every month
$start_day = "01";
# for every month ...
for ($i = 0; $i < $no_months; $i++)
{
# the month of the year (horrid modular maths)
$this_month = (($start_month + $i - 1) % 12) + 1;
# number of years gone through since we started the loop
$year_count = floor(($i + $start_month - 1) / 12);
# the year of the current analysis period
$this_year = $year + $year_offset + $year_count + 1900;
# set the end day for the processing
if ($this_month == 1 || $this_month == 3 || $this_month == 5 || $this_month == 7 || $this_month == 8 || $this_month == 10 || $this_month == 12)
{
$end_day = "31";
}
elsif ($this_month == 4 || $this_month == 6 || $this_month == 9 || $this_month == 11)
{
$end_day = "30";
}
else
{
if (($year % 4) != 0)
{
$end_day = "28";
}
else
{
$end_day = "29";
}
}
# generate the date string
$start = $this_year . "-" . $this_month . "-" . $start_day;
$end = $this_year . "-" . $this_month . "-" . $end_day;
$out = $out_directory . $out_prefix . $this_year . "-" . $this_month . $out_suffix;
# The command to generate the report
$execute = "$dsrun org.dspace.app.statistics.LogAnalyser -start $start -end $end -out $out";
system($execute);
}
exit(1);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-initial

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -43,83 +43,9 @@
###########################################################################
# This script generates a report from the first of the current month to the end
# of the current month. This is not great, and will be superceded soon
#
# To customise for your own use change the $out_prefix, $out_suffix,
# $dsrun and $out_directory variables below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which appears near the bottom of the page, and is
# commented with "# The command to generate the report"
#
# For more information on using the LogAnalyser, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
###########################################################################
use POSIX qw(floor);
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
my $start;
my $end;
my $out;
my $i;
my $no_months;
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
my $out_prefix;
my $out_suffix;
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
# Details used
################################################
$out_prefix = "dspace-log-monthly-";
$out_suffix = ".dat";
$dsrun = "/dspace/bin/dsrun";
$out_directory = "/dspace/log/";
################################################
$start_day = "01";
$this_year = $year + 1900;
$this_month = $month + 1;
if ($this_month == 1 || $this_month == 3 || $this_month == 5 || $this_month == 7 || $this_month == 8 || $this_month == 10 || $this_month == 12)
{
$end_day = "31";
}
elsif ($this_month == 4 || $this_month == 6 || $this_month == 9 || $this_month == 11)
{
$end_day = "30";
}
else
{
if (($year % 4) != 0)
{
$end_day = "28";
}
else
{
$end_day = "29";
}
}
$start = $this_year . "-" . $this_month . "-" . $start_day;
$end = $this_year . "-" . $this_month . "-" . $end_day;
$out = $out_directory . $out_prefix . $this_year . "-" . $this_month . $out_suffix;
# The command to generate the report
$execute = "$dsrun org.dspace.app.statistics.LogAnalyser -start $start -end $end -out $out";
$status = system($execute);
exit($status);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-monthly

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -42,52 +42,9 @@
###########################################################################
# This script generates a full report based on the full log period
#
# To customise for your own use change the $out_prefix, $out_suffix,
# $dsrun and $out_directory variables below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which is below under $general
#
# For more information on using the LogAnalyser, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
###########################################################################
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
my $this_year = $year + 1900;
my $this_month = $month + 1;
# Details used
######################################################
$in_prefix = "dspace-log-general-";
$in_suffix = ".dat";
$out_prefix = "report-general-";
$out_suffix = ".html";
$dsrun = "/dspace/bin/dsrun";
$in_directory = "/dspace/log/";
$out_directory = "/dspace/reports/";
######################################################
$in = $in_directory . $in_prefix . $this_year . "-" . $this_month . "-" . $day . $in_suffix;
$out = $out_directory . $out_prefix . $this_year . "-" . $this_month . "-" . $day . $out_suffix;
$execute = "$dsrun org.dspace.app.statistics.ReportGenerator -format html -in $in -out $out";
$status = system($execute);
exit($status);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-report-general

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -44,94 +44,9 @@
# This script starts from the year and month specified below and works
# forward until the end of the current month, generating monthly reports
# from the dstat aggregation files.
#
# To customise for your own use change the $in_prefix, $in_suffix, $out_prefix,
# $out_suffix, $start_year, $start_month, $dsrun and $out_directory variables
# below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which appears near the bottom of the page, and is
# commented with "# The command to generate the report"
#
# For more information on using the ReportGenerator, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.ReportGenerator -help
###########################################################################
use POSIX qw(floor);
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
my $start;
my $end;
my $out;
my $i;
my $no_months;
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
my $out_prefix;
my $out_suffix;
# Details used
################################################
$in_prefix = "dspace-log-monthly-";
$in_suffix = ".dat";
$out_prefix = "report-";
$out_suffix = ".html";
$start_year = "2004";
$start_month = "5";
$dsrun = "/dspace/bin/dsrun";
$in_directory = "/dspace/log/";
$out_directory = "/dspace/reports/";
################################################
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
# set up the variables to use in the loop
# number of years after the current year (will mostly be negative)
# <current year> = (<perl year> + 1900)
# <start year offset> = <start year> - <current year>
$year_offset = $start_year - ($year + 1900);
# total number of months between now and the start date (negated to be positive in general)
# <months in year offset> = |<start year offset>| * 12
# <difference in current year months> = (<current perl month> + 1) - <start month>
# <total number of months> = <months in year offset> + <difference in current year months>
# we use -1 to make <start year offset> positive since it should always be negative
$no_months = (-1 * ($year_offset * 12)) + (($month + 1) - $start_month);
# start day of every month
$start_day = "01";
# for every month ...
for ($i = 0; $i < $no_months; $i++)
{
# the month of the year (horrid modular maths)
$this_month = (($start_month + $i - 1) % 12) + 1;
# number of years gone through since we started the loop
$year_count = floor(($i + $start_month - 1) / 12);
# the year of the current analysis period
$this_year = $year + $year_offset + $year_count + 1900;
# input and output file paths
$in = $in_directory . $in_prefix . $this_year . "-" . $this_month . $in_suffix;
$out = $out_directory . $out_prefix . $this_year . "-" . $this_month . $out_suffix;
# The command to generate the report
$execute = "$dsrun org.dspace.app.statistics.ReportGenerator -format html -in $in -out $out";
system($execute);
}
exit(1);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-report-initial

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env perl
#!/bin/sh
###########################################################################
#
@@ -43,63 +43,9 @@
###########################################################################
# This script generates a report from the aggregation file which has been
# run for the most recent month
#
# To customise for your own use change the $out_prefix, $out_suffix,
# $dsrun and $out_directory variables below.
#
# If you wish to futher configure this script, you will need to edit the
# command being executed, which appears near the bottom of the page, and is
# commented with "# The command to generate the report"
#
# For more information on using the LogAnalyser, use:
#
# [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
###########################################################################
use POSIX qw(floor);
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
my $start;
my $end;
my $out;
my $i;
my $no_months;
my $second;
my $minute;
my $hour;
my $day;
my $month;
my $year;
my $week_day;
my $day_of_year;
my $is_dst;
my $out_prefix;
my $out_suffix;
# Get the all the values for current time
($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time);
# Details used
################################################
$in_prefix = "dspace-log-monthly-";
$in_suffix = ".dat";
$out_prefix = "report-";
$out_suffix = ".html";
$dsrun = "/dspace/bin/dsrun";
$in_directory = "/dspace/log/";
$out_directory = "/dspace/reports/";
################################################
$this_year = $year + 1900;
$this_month = $month + 1;
$in = $in_directory . $in_prefix . $this_year . "-" . $this_month . $in_suffix;
$out = $out_directory . $out_prefix . $this_year . "-" . $this_month . $out_suffix;
# The command to generate the report
$execute = "$dsrun org.dspace.app.statistics.ReportGenerator -format html -in $in -out $out";
$status = system($execute);
exit($status);
$BINDIR/dsrun org.dspace.app.statistics.CreateStatReport -r stat-report-monthly