Archived
1
0
Fork 0

gen_grading: checck if there is a defense or trace before generate

This commit is contained in:
Mercier Pierre-Olivier 2013-10-18 18:15:11 +02:00
parent 63c2543fc1
commit cea68aa7a7

View file

@ -35,62 +35,68 @@ sub process
my $grade = Grading->new();
my @defenses;
# Create defenses groups
opendir(my $dh, "$basedir/$year/$project_id/defenses/") or croak "can't opendir $basedir/$year/$project_id/defenses/: $!";
for my $sout (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/defenses/$_" } readdir($dh))
{
my $sid;
($sid = $sout) =~ s/\.xml$//;
push @defenses, $sid;
open my $xml, "<", "$basedir/$year/$project_id/defenses/$sout" or die $!;
binmode $xml;
my $str;
$str .= $_ while (<$xml>);
my $defense = Defense->new($str);
my $ids = $defense->getIds();
my @keys = keys %$ids;
my $def_i = $keys[0];
$def_i =~ s/^(.+)g.*$/$1/;
$ids->{$def_i.'_end_$LOGIN'} = undef;
$ids->{$def_i.'_end_group'} = undef;
$grade->create_from_ids($sid, $ids);
}
closedir $dh;
# Create traces groups
opendir($dh, "$basedir/$year/$project_id/traces/") or croak "can't opendir $basedir/$year/$project_id/traces/: $!";
for my $dir (grep { ( ! /^\./ ) && -d "$basedir/$year/$project_id/traces/$_" } readdir($dh))
if (-d "$basedir/$year/$project_id/defenses/")
{
next if (grep { $dir eq "defense_$_" } @defenses);
my @defenses;
# Create defenses groups
opendir(my $dh, "$basedir/$year/$project_id/defenses/") or croak "can't opendir $basedir/$year/$project_id/defenses/: $!";
for my $sout (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/defenses/$_" } readdir($dh))
{
my $sid;
($sid = $sout) =~ s/\.xml$//;
push @defenses, $sid;
my $ids = {};
opendir(my $dhm, "$basedir/$year/$project_id/traces/$dir") or croak "can't opendir $basedir/$year/$project_id/traces/$dir: $!";
for my $login (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/traces/$dir/$_" } readdir($dhm))
{
open my $xml, "<", "$basedir/$year/$project_id/traces/$dir/$login" or die $!;
open my $xml, "<", "$basedir/$year/$project_id/defenses/$sout" or die $!;
binmode $xml;
my $trace = Trace->new($xml);
my $str;
$str .= $_ while (<$xml>);
my %tids = %{ $trace->getIds() };
for my $kid (keys %tids)
{
$ids->{ $kid } = $tids{ $kid };
}
my $defense = Defense->new($str);
my $ids = $defense->getIds();
my @keys = keys %$ids;
my $def_i = $keys[0];
$def_i =~ s/^(.+)g.*$/$1/;
$ids->{$def_i.'_end_$LOGIN'} = undef;
$ids->{$def_i.'_end_group'} = undef;
$grade->create_from_ids($sid, $ids);
}
$grade->create_from_ids($dir, $ids);
closedir $dh;
}
if (-d "$basedir/$year/$project_id/traces/")
{
# Create traces groups
opendir($dh, "$basedir/$year/$project_id/traces/") or croak "can't opendir $basedir/$year/$project_id/traces/: $!";
for my $dir (grep { ( ! /^\./ ) && -d "$basedir/$year/$project_id/traces/$_" } readdir($dh))
{
next if (grep { $dir eq "defense_$_" } @defenses);
my $ids = {};
opendir(my $dhm, "$basedir/$year/$project_id/traces/$dir") or croak "can't opendir $basedir/$year/$project_id/traces/$dir: $!";
for my $login (grep { ( ! /^\./ ) && -f "$basedir/$year/$project_id/traces/$dir/$_" } readdir($dhm))
{
open my $xml, "<", "$basedir/$year/$project_id/traces/$dir/$login" or die $!;
binmode $xml;
my $trace = Trace->new($xml);
my %tids = %{ $trace->getIds() };
for my $kid (keys %tids)
{
$ids->{ $kid } = $tids{ $kid };
}
}
$grade->create_from_ids($dir, $ids);
}
closedir $dh;
}
closedir $dh;
return $grade->toString;
}