#!/usr/cs/bin/perl
#
# File: reformat.pl
#
# Purpose: Makes diff-able format of ranks, and then gets
#          n_star
#
# Modifications:
#   01-APR-1998  txe  Initial creation
#   03-APR-1998  txe  Generalized to accept viles-format files as well
#

  require "subs/ir_subs.pm";
  require "subs/merits.pm";
  require "subs/ranks.pm";

  $data_dir  = GetArgument (0, "data directory",  "test");
  $rank_name = GetArgument (1, "input ranks file", "opt");

  $in_file   = "$data_dir/ranks/$rank_name.ranks";
  $out_file1 = "$data_dir/viles/$rank_name.viles";
  $out_file2 = "$data_dir/viles/$rank_name.noord";
  $ns_file   = "$data_dir/viles/$rank_name.nstar";

  &ReformatRanks ($in_file, $out_file1, $out_file2, $ns_file);
  print "Done.\n";

##############################################################################

sub ReformatRanks {
  local ($in_file, $out_file1, $out_file2, $ns_file) = @_;

  if (!open (FP, $in_file)) {
    print "'$in_file' does not exist, trying ";
    $in_file  = "$data_dir/viles/$rank_name";
    print "'$in_file'...\n";
    $viles_format = 1;
  }
  else {
    close (FP);
    $viles_format = 0;
  }

  print "Reformatting ranks '$in_file' into Viles-compatible '$out_file1'...\n";

  &ReadRanks ($in_file);

  $viles_format = 1;
  unlink ($out_file1);
  &WriteRanks ($out_file1, %merits);

  $viles_format = 2;
  unlink ($out_file2);
  &WriteRanks ($out_file2, %merits);
   
  print "Writing nstars to '$ns_file'...\n";

  %ords = %saved_ords;

  open (NS, ">$ns_file") || die ("Error opening ns_file '$ns_file'\n");
  foreach (@query_ids) {
    $query_id = $_;
    $last = "xxx";
    $ords {$query_id, $last} = 0;
    foreach (@coll_ids) {
      if ($merits {$query_id,$_} > 0 && $ords {$query_id,$_} > $ords {$query_id,$last}) {
        $last = $_;
      }
    }
    printf NS "%d\t%s\t%d\t%d\n", $query_id, $last, $merits{$query_id,$last}, $ords{$query_id,$last};
  }
  close (NS);
}

############################################################################

