#!/usr/bin/env perl
# +-======-+ 
#  Copyright (c) 2003-2007 United States Government as represented by 
#  the Admistrator of the National Aeronautics and Space Administration.  
#  All Rights Reserved.
#  
#  THIS OPEN  SOURCE  AGREEMENT  ("AGREEMENT") DEFINES  THE  RIGHTS  OF USE,
#  REPRODUCTION,  DISTRIBUTION,  MODIFICATION AND REDISTRIBUTION OF CERTAIN 
#  COMPUTER SOFTWARE ORIGINALLY RELEASED BY THE UNITED STATES GOVERNMENT AS 
#  REPRESENTED BY THE GOVERNMENT AGENCY LISTED BELOW ("GOVERNMENT AGENCY").  
#  THE UNITED STATES GOVERNMENT, AS REPRESENTED BY GOVERNMENT AGENCY, IS AN 
#  INTENDED  THIRD-PARTY  BENEFICIARY  OF  ALL  SUBSEQUENT DISTRIBUTIONS OR 
#  REDISTRIBUTIONS  OF THE  SUBJECT  SOFTWARE.  ANYONE WHO USES, REPRODUCES, 
#  DISTRIBUTES, MODIFIES  OR REDISTRIBUTES THE SUBJECT SOFTWARE, AS DEFINED 
#  HEREIN, OR ANY PART THEREOF,  IS,  BY THAT ACTION, ACCEPTING IN FULL THE 
#  RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS AGREEMENT.
#  
#  Government Agency: National Aeronautics and Space Administration
#  Government Agency Original Software Designation: GSC-15354-1
#  Government Agency Original Software Title:  GEOS-5 GCM Modeling Software
#  User Registration Requested.  Please Visit http://opensource.gsfc.nasa.gov
#  Government Agency Point of Contact for Original Software:  
#  			Dale Hithon, SRA Assistant, (301) 286-2691
#  
# +-======-+ 
#=======================================================================
# name - setup_modis_l2_data
# purpose - organize modis mod04 and myd04 data into subdirectories
#           expected by the reading program
#
# runtime parameter
# => $workdir: directory location of modis data
#=======================================================================
use strict;
use warnings;

# global variables
#-----------------
my ($workdir, %flags);

# main program
#-------------
{
    use File::Basename ("basename");
    use File::Copy ("move");
    use File::Path ("mkpath");

    my ($file, $base, $label, $Adate);
    my ($type, $year, $jdoy, $subdir);

    init();
    foreach $file (<$workdir/M?D04_L2.*.NRT.hdf>) {
        $base = basename $file;
        ($label, $Adate) = split /[\.]/, $base;

        $type = substr($label, 0, 5);
        $year = substr($Adate, 1, 4);
        $jdoy = substr($Adate, 5, 3);

        $subdir = "$workdir/$type/$year/$jdoy";
        unless (-d $subdir) {
            mkpath($subdir, \%flags) or die "Error making dir: $subdir;";
        }
        move($file, $subdir);
    }
}

#=======================================================================
# name - init
# purpose - get input parameters and flags
#=======================================================================
sub init {
    use Getopt::Long;
    my ($verbose);

    GetOptions( "v" => \$verbose );
    $workdir = shift @ARGV;

    $flags{"verbose"} = 1 if $verbose;
}
