- foreach my $archname (sort keys %$ocean) {
- my $arch= $ocean->{$archname};
- foreach my $islandname (sort keys %$arch) {
- $sth->execute($islandname, $archname);
- }
- }
- $dbh->commit;
-}
-
-#---------- routes ----------
-
-{
- foreach my $islandname (sort keys %{ $route_mysteries{$oceanname} }) {
- warn "$route_mysteries{$oceanname}{$islandname} routes".
- " for unknown island $islandname\n";
- }
-
- my $allroutes= $routes{$oceanname};
-
- my @propqueue= ();
-
- sub distance_set_propagate ($$$$) {
- my ($lev, $start, $upto, $start2upto) = @_;
- $allroutes->{$start}{$upto}= $start2upto;
- push @propqueue, [ $lev, $start, $upto ];
- }
-
- sub distance_propagate_now {
- my ($lev, $start, $upto) = @_;
- my $startref= $allroutes->{$start};
- my $start2upto= $startref->{$upto};
- my $uptoref= $allroutes->{$upto};
-
- for my $next (keys %$uptoref) {
- next if $next eq $upto;
- my $unext= $uptoref->{$next};
- next unless defined $unext;
- distance_update("${lev}p", $start, $next, $start2upto + $unext);
- }
- }
-
- sub distance_update ($$$$) {
- my ($lev, $x, $y, $newdist) = @_;
- distance_update_one("${lev}x",$x,$y,$newdist);
- distance_update_one("${lev}y",$y,$x,$newdist);
- }
-
- sub distance_update_one ($$$$) {
- my ($lev, $x, $y, $newdist) = @_;
- my $xref= $allroutes->{$x};
- my $currently= $xref->{$y};
- return if defined($currently) and $currently <= $newdist;
- distance_set_propagate("${lev}o",$x,$y,$newdist);
- }
+ my $setsizes= $dbh->prepare(<<'END')
+ UPDATE commods
+ SET unitmass = ?,
+ unitvolume = ?
+ WHERE commodname = ?
+END
+ ;
+ my $setordval= $dbh->prepare(<<'END')
+ UPDATE commods
+ SET ordval = ?
+ WHERE commodname = ?
+END
+ ;
+ my $setclass= $dbh->prepare(<<'END')
+ UPDATE commods
+ SET commodclass = ?
+ WHERE commodname = ?
+END
+ ;
+ my $setinclass= $dbh->prepare(<<'END')
+ UPDATE commods
+ SET inclass = ?
+ WHERE commodname = ?
+END
+ ;
+ my %incl;
+ foreach my $commod (sort {
+ commodsortkey($a) cmp commodsortkey($b)
+ } keys %commods) {
+ my $c= $commods{$commod};
+ die "no mass for $commod" unless defined $c->{Mass};
+ die "no volume for $commod" unless defined $c->{Volume};
+
+ my @qa= ($c->{Mass}, $c->{Volume}, $commod);
+ $insert->execute(@qa);
+ $setsizes->execute(@qa);
+ $setordval->execute($c->{Ordval} || 0, $commod);
+ my $cl= $c->{Class};
+ $setclass->execute($cl, $commod);