gen_grading: checck if there is a defense or trace before generate
This commit is contained in:
parent
63c2543fc1
commit
cea68aa7a7
1 changed files with 46 additions and 40 deletions
|
|
@ -35,62 +35,68 @@ sub process
|
||||||
|
|
||||||
my $grade = Grading->new();
|
my $grade = Grading->new();
|
||||||
|
|
||||||
my @defenses;
|
if (-d "$basedir/$year/$project_id/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))
|
|
||||||
{
|
{
|
||||||
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 = {};
|
open my $xml, "<", "$basedir/$year/$project_id/defenses/$sout" or die $!;
|
||||||
|
|
||||||
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;
|
binmode $xml;
|
||||||
|
|
||||||
my $trace = Trace->new($xml);
|
my $str;
|
||||||
|
$str .= $_ while (<$xml>);
|
||||||
|
|
||||||
my %tids = %{ $trace->getIds() };
|
my $defense = Defense->new($str);
|
||||||
for my $kid (keys %tids)
|
|
||||||
{
|
my $ids = $defense->getIds();
|
||||||
$ids->{ $kid } = $tids{ $kid };
|
|
||||||
}
|
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;
|
||||||
$grade->create_from_ids($dir, $ids);
|
}
|
||||||
|
|
||||||
|
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;
|
return $grade->toString;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue