#!/usr/bin/perl # Generate the annual CSV files to configure Graham's course feedback # system based on data from coursedb.txt use FindBin qw($RealBin); # find directory where this file is located ... use lib '/anfs/www/tools/share/ucampas/perl-PlexTree', $RealBin; use CourseDB; use bytes; use strict; my $directory = '.'; # output directory sub usage() { print STDERR "usage: course2csv coursedb.txt\n"; exit 1; } usage() unless @ARGV == 1; my $fndb = $ARGV[0]; # open course database my $db = CourseDB::load($fndb); # Open CSV files my $fnc = "$directory/coursedb-courses.csv"; open(FC, '>', $fnc) or die("$fnc:$!\n"); my $fnlc = "$directory/coursedb-lecturer_course.csv"; open(FLC, '>', $fnlc) or die("$fnlc:$!\n"); my $fnl = "$directory/coursedb-lecturers.csv"; open(FL, '>', $fnl) or die("$fnl:$!\n"); my $fnyc = "$directory/coursedb-yeargroup_course.csv"; open(FYC, '>', $fnyc) or die("$fnyc:$!\n"); my $fny = "$directory/coursedb-yeargroup.csv"; open(FY, '>', $fny) or die("$fny:$!\n"); foreach my $course ($db->courses) { next unless $course->takes_place; print FC Misc::csv_line($course->code, $course->title); foreach my $cl ($course->classes) { print FYC Misc::csv_line($cl->code, $course->code); } for my $lecturer ($course->proprietors, $course->contributors) { print FLC Misc::csv_line($lecturer->code, $course->code); } } foreach my $lecturer ($db->lecturers) { print FL Misc::csv_line($lecturer->code, $lecturer->title, $lecturer->firstnames, $lecturer->surname); } foreach my $class ($db->classes) { print FY Misc::csv_line($class->code,$class->title); } # close CSV files close FC or die("$fnc:$!\n"); close FLC or die("$fnlc:$!\n"); close FL or die("$fnl:$!\n"); close FYC or die("$fnyc:$!\n"); close FY or die("$fny:$!\n");