#!/usr/bin/perl

# change to meet your status table
$ks_status{"'U'"} = "'C'";
$ks_status{"'A'"} = "'F'";
$ks_status{"'I'"} = "'I'";
$ks_status{"'H'"} = "'M'";
$ks_status{"'C'"} = "'V'";
$ks_status{"'P'"} = "'S'";



while (<>) {
  $problem = "";
  $summary = "";
  undef @rest;

  if (/^INSERT INTO projects VALUES \((.*)\)\\g$/) {
    $entry = $1;
    ($sid, $spid, $o_date, $o_tech, $sc_date, $c_date, $c_tech, $currtech,
     $state, $status, $priority, $c_name, $c_phone, $problem, $summary)
      = split (/,/, $entry);

    $now = time;

    print "INSERT INTO slips VALUES ($sid, 0, 0, $o_date, $o_tech, $c_date, ";
    print "$c_tech, $currtech, $ks_status{$status}, $priority, '', $summary, ";
    print "$problem, 0, $sc_date, '', '1', $now, 'admin', 0, 0, 0, 0, '', ";
    print "'', 0);\n";
    print "INSERT INTO members VALUES ('quickslips', $sid);\n";

  } elsif (/^INSERT INTO tasks VALUES \((.*)\)\\g$/) {
    $entry = $1;
    ($sid, $spid, $depend, $o_date, $o_tech, $c_date, $c_tech, $currtech,
     $state, $status, $priority, $c_name, $c_phone, $problem, $summary, @rest)
      = split (/,/, $entry);

    if ($#rest > -1) {

      # wenn ein Rest (@rest) vorhanden, dann waren Kommata (,) in der
      # Problembeschreibung und/oder in der Kurzbeschreibung $summary.
      # Die Variablen $problem, $summary und @rest müssen neu
      # durchkämmt werden.

      # @rest und $summary müssen wieder zusammengesetzt werden.  Im
      # resultierenden String wird rückwärts nach dem letzten String
      # (durch ' geklammert) gesucht.  Dabei müssen im String
      # enthaltene Hochkommata (\') erhalten bleiben.  Dieser String
      # wird zu $summary.  Wenn dann noch was in @rest enthalten ist,
      # wird es an $problem angehängt.

      $rrest = reverse (join (",", ($summary, @rest)));
      print STDERR "rrest = *$rrest*\n";
      ($sum, $sep, $pbm) = ($rrest =~ /^('.*?')([^\\]|$)(.*)/);
      # re: finde String, der mit ' beginnt, alles darf folgen .*,
      # aber möglichst wenig ? bis zu einem Hochkomma ', das entweder
      # nicht von einem Backslash gefolgt wird oder am Ende des
      # Strings steht.
      $summary = reverse($sum);
      print STDERR "summary = *$summary*\n";
      print STDERR "restpb  = *$pbm*\n";
      $problem .= $sep . reverse($pbm);
    }

    $problem =~ s/
/
/go;
    $now = time;

    print "INSERT INTO slips VALUES ($sid, $spid, $depend, $o_date, $o_tech, $c_date, ";
    print "$c_tech, $currtech, $ks_status{$status}, $priority, '', $summary, ";
    print "$problem, 0, 0, '', '1', $now, 'admin', 0, 0, 0, 0, '', ";
    print "'', 0);\n";
    
    print STDERR "\n\n";

  } elsif (/^INSERT INTO followups VALUES \((.*)\)\\g$/) {
    $entry = $1;
    ($f_sid, $f_date, $f_tech, $f_text, $f_seq, @rest)
      = split (/,/, $entry);

    if ($#rest > -1) {
      # wenn ein Rest (@rest) vorhanden, dann waren Kommata (,) in der
      # Problembeschreibung $f_text.  Die Variablen $f_text, $f_seq und
      # @rest müssen neu durchkämmt werden.

      # $f_seq kann mit Komma an $f_text angehängt werden.  Das
      # letzte Element von @rest wird zu $f_seq.  Vorausgehende
      # Elemente in @rest werden auch mit Komma an $f_text angehängt.
      $f_text .= ",$f_seq";
      $f_seq = pop(@rest);
      while ($#rest > -1) {
        $f_text .= ",";
        $f_text .= shift(@rest);
      }
    }
      
    $f_text =~ s/
/
/go;
    $now = time;

    print "INSERT INTO followups (f_sid, f_date, f_tech, f_text, f_seq) ";
    print "VALUES ($f_sid, $f_date, $f_tech, $f_text, $f_seq);\n";
  }

}
