...
##
$collectionData[$sortedCollectionData[$i]]{'CollectionId'}
##
##
my $orderby = 'collection';
my @data = readCollectionData('dummyFilename.txt');
my @indices = sortCollectionData($orderby, @data);
print Dumper \@indices;
printCollectionData(\@data, @indices);
##
##
...
if($sortedCollectionData[$i]{'Status'} eq "I") {
$longStatus = "Incomplete";
}elsif($sortedCollectionData[$i]{'Status'} eq "SI") {
$longStatus = "Submitted Incomplete";
}elsif($sortedCollectionData[$i]{'Status'} eq "C") {
$longStatus = "Submitted";
}else{
$longStatus = "Submitted Complete";
}
...
##
##
my %translateLongStatus = (
'I' => 'Incomplete',
'SI' => 'Submitted Incomplete',
'C' => 'Submitted',
);
...
my ($longStatus, $rowStyle, $rowColor);
$longStatus = $translateLongStatus{ $collectionData[$i]{Status} } ||'Submitted Complete';
...
}
##
##
#!perl -w
use strict;
use Data::Dumper;
sub readCollectionData {
my $arcFile = shift;
my (@collectionData);
my $semaphore = $arcFile . '.lock';
my ($longStatus, $rowStyle, $rowColor);
#open(LOCKFILE, ">>$semaphore") or die "$semaphore: $!";
#flock(LOCKFILE, LOCK_EX) or die "flock() failed for $semaphore: $!";
#open (ARCFILE, "<$arcFile") or die "Failed to open $arcFile: $!";
local *ARCFILE = *DATA;
# Retrieve file information from arcFile as an array of hashes
while( ) {
my( $col, $cnt, $stat, $miss, $mod) = m[
^
CollectionId \s* => \s* (\d+)? \s*
Framecount \s* => \s* (\d+)? \s*
Status \s* => \s* (\w+)? \s*
Missing \s* => \s* ([\d,]+)? \s*
Modified \s* => \s* ([\d/]+\s[\d:]+)? \s*
$
]x or warn "Bad format at line $.\n" and next;
my( $modday, $modmon, $modyear, $modhrs, $modmin, $modsec ) =
$mod =~ m[(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+)]
or warn "Bad date format in line $." and next;
push @collectionData, {
CollectionId => $col,
Framecount => $cnt,
Status => $stat,
Missing => $miss,
Modified => sprintf( "%4d/%02d/%02d %02d:%02d:%02d",
$modyear, $modmon, $modday, $modhrs, $modmin, $modsec ),
};
}
return @collectionData
};
# Map the program orderby names to the internal names in the hash
my %sort_columns = (
collection => 'CollectionId',
framecount => 'Framecount',
status => 'Status',
missing => 'Missing',
);
sub sortCollectionData {
my ($orderby, @collectionData) = @_;
# Sort the collection according to orderBy param
my $sort_col = $sort_columns{ $orderby } || 'Modified';
my @sortedCollectionData = sort {
$collectionData[ $b ]{$sort_col} <=> $collectionData[ $a ]{$sort_col}
||
$collectionData[ $b ]{Modified} cmp $collectionData[ $a ]{Modified}
} 0 .. $#collectionData;
return @sortedCollectionData
}
my %translateLongStatus = (
'I' => 'Incomplete',
'SI' => 'Submitted Incomplete',
'C' => 'Submitted',
);
sub printCollectionData {
my ($collectionData, @sortedCollectionData) = @_;
my @collectionData = @$collectionData;
my $transactions = scalar(@collectionData);
for (my $i=0; $i < $transactions; $i++)
{
my ($longStatus, $rowStyle, $rowColor);
$longStatus = $translateLongStatus{ $collectionData[$i]{Status} } ||'Submitted Complete';
if (($i%2) == 0){
$rowStyle = "oddrow";
$rowColor = "#e5e5e5";
}
else {
$rowStyle = "evenrow";
$rowColor = "#ffffff";
}
print $i, $longStatus, $collectionData[ $i ]->{CollectionId}, "\n";
}
}
my $orderby = 'collection';
my @data = readCollectionData('dummyFilename.txt');
my @indices = sortCollectionData($orderby, @data);
print Dumper \@indices;
printCollectionData(\@data, @indices);
__DATA__
CollectionId=>26154 Framecount=>6 Status=>SC Missing=>0 Modified=>01/22/2012 22:12:09
CollectionId=>26155 Framecount=>6 Status=>I Missing=>4 Modified=>01/22/2012 22:12:20
CollectionId=>25000 Framecount=>6 Status=>SC Missing=>0 Modified=>01/22/2012 22:13:07
CollectionId=>25002 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:14
CollectionId=>25009 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:19
CollectionId=>25309 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:25
CollectionId=>25349 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:31
CollectionId=>25318 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:37
CollectionId=>21318 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:43
CollectionId=>21342 Framecount=>6 Status=>I Missing=>5 Modified=>01/22/2012 22:13:56