#!/usr/bin/env perl

###########################################################################
#
# stat-report-initial
#
# Author: Richard Jones
# Created On: 28/02/2005
#
# Copyright (c) 2002, 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.
###########################################################################

###########################################################################
# 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);

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);