Changeset 11912


Ignore:
Timestamp:
2006-06-02T15:53:25+12:00 (18 years ago)
Author:
mdewsnip
Message:

Fixed the problems where place names were being used as keys, but they weren't unique. This required quite a few changes to the write_static_macro functions (hope I haven't messed anything up).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cic-hcap/perllib/plugins/CICPlug.pm

    r11908 r11912  
    231231
    232232    # Create a document object for each institution
    233     my %institution_state_to_names_mapping;
    234     my %institution_name_to_id_mapping;
     233    my %institution_id_to_name_mapping;
     234    my %institution_state_to_ids_mapping;
    235235    while (my $row_hashref = $institution_sql_handle->fetchrow_hashref) {
    236236    # Skip any institutions that didn't respond
     
    353353    # Build mappings for creating the static macrofiles
    354354    my $institution_name = $row_hashref->{"Institution_Name"};
    355     $institution_name_to_id_mapping{$institution_name} = $institution_doc_obj->get_OID();
     355    $institution_id_to_name_mapping{$institution_doc_obj->get_OID()} = $institution_name;
    356356    my $institution_state = $row_hashref->{"State"};
    357     push(@{$institution_state_to_names_mapping{$institution_state}}, $institution_name);
     357    push(@{$institution_state_to_ids_mapping{$institution_state}}, $institution_doc_obj->get_OID());
    358358    }
    359359
    360360    # Write the institutions.dm macrofile
    361     &write_static_browser_macrofile("institutions", \%institution_name_to_id_mapping);
     361    &write_static_browser_macrofile("institutions", \%institution_id_to_name_mapping);
    362362
    363363    # Write the states.dm macrofile
    364     &write_state_browser_macrofile("states", \%institution_state_to_names_mapping, \%institution_name_to_id_mapping);
     364    &write_state_browser_macrofile("states", \%institution_state_to_ids_mapping, \%institution_id_to_name_mapping);
    365365}
    366366
     
    427427
    428428    # Create a document object for each place
    429     my %place_type_to_names_mapping;
    430     my %place_style_to_names_mapping;
    431     my %place_date_to_names_mapping;
    432     my %place_function_to_names_mapping;
    433     my %place_name_to_id_mapping;
     429    my %place_type_to_ids_mapping;
     430    my %place_style_to_ids_mapping;
     431    my %place_date_to_ids_mapping;
     432    my %place_function_to_ids_mapping;
     433    my %place_id_to_name_mapping;
    434434    my %place_id_to_institution_name_mapping;
    435435    while (my $row_hashref = $place_sql_handle->fetchrow_hashref) {
     
    491491    while (my $place_styles_match_hashref = $place_styles_sql_handle->fetchrow_hashref()) {
    492492        my $place_style = $place_styles_match_hashref->{"Architectural_Classification"};
    493         push(@{$place_style_to_names_mapping{$place_style}}, $place_name);
     493        push(@{$place_style_to_ids_mapping{$place_style}}, $place_doc_obj->get_OID());
    494494        &new_metadata_entry($place_doc_obj, "Style", $place_style);
    495495    }
     
    516516        elsif ($place_construction_date_value < 1995) { $place_time_period = "1945-1995"; }
    517517        else { $place_time_period = "post-1995"; }
    518         push(@{$place_date_to_names_mapping{$place_time_period}}, $place_name);
     518        push(@{$place_date_to_ids_mapping{$place_time_period}}, $place_doc_obj->get_OID());
    519519    }
    520520    &new_metadata_entry($place_doc_obj, "Time_period", $place_time_period);
     
    557557        $place_function =~ s/\s*$//;
    558558        next if ($place_function eq "");
    559         push(@{$place_function_to_names_mapping{$place_function}}, $place_name);
     559        push(@{$place_function_to_ids_mapping{$place_function}}, $place_doc_obj->get_OID());
    560560    }
    561561    &new_metadata_entry($place_doc_obj, "Functions", $place_functions);
     
    615615
    616616    # Build mappings for creating the static macrofiles
    617     $place_name_to_id_mapping{$place_name} = $place_doc_obj->get_OID();
    618     push(@{$place_type_to_names_mapping{$place_type}}, $place_name);
    619     }
    620 
    621     &write_bilevel_static_browser_macrofile("types", \%place_type_to_names_mapping, \%place_name_to_id_mapping, \%place_id_to_institution_name_mapping);
    622     &write_bilevel_static_browser_macrofile("styles", \%place_style_to_names_mapping, \%place_name_to_id_mapping, \%place_id_to_institution_name_mapping);
    623     &write_bilevel_static_browser_macrofile("dates", \%place_date_to_names_mapping, \%place_name_to_id_mapping, \%place_id_to_institution_name_mapping);
    624     &write_bilevel_static_browser_macrofile("functions", \%place_function_to_names_mapping, \%place_name_to_id_mapping, \%place_id_to_institution_name_mapping);
     617    $place_id_to_name_mapping{$place_doc_obj->get_OID()} = $place_name;
     618    push(@{$place_type_to_ids_mapping{$place_type}}, $place_doc_obj->get_OID());
     619    }
     620
     621    &write_bilevel_static_browser_macrofile("types", \%place_type_to_ids_mapping, \%place_id_to_name_mapping, \%place_id_to_institution_name_mapping);
     622    &write_bilevel_static_browser_macrofile("styles", \%place_style_to_ids_mapping, \%place_id_to_name_mapping, \%place_id_to_institution_name_mapping);
     623    &write_bilevel_static_browser_macrofile("dates", \%place_date_to_ids_mapping, \%place_id_to_name_mapping, \%place_id_to_institution_name_mapping);
     624    &write_bilevel_static_browser_macrofile("functions", \%place_function_to_ids_mapping, \%place_id_to_name_mapping, \%place_id_to_institution_name_mapping);
    625625}
    626626
     
    897897{
    898898    my $static_browser_package_name = shift(@_);
    899     my $name_to_id_mapping = shift(@_);
     899    my $id_to_name_mapping = shift(@_);
    900900
    901901    my $static_browser_macrofile_path = "$ENV{'GSDLHOME'}\\collect\\cic-hcap\\macros\\$static_browser_package_name.dm";
    902902    print STDERR "Writing $static_browser_macrofile_path...\n";
    903903    open(BROWSER_MACROFILE, ">$static_browser_macrofile_path") or die "Error: Could not write to $static_browser_macrofile_path.\n";
    904     &write_static_browser_macros($static_browser_package_name, $name_to_id_mapping);
     904    &write_static_browser_macros($static_browser_package_name, $id_to_name_mapping);
    905905    close(BROWSER_MACROFILE);
    906906}
     
    910910{
    911911    my $static_browser_package_name = shift(@_);
    912     my $name_to_id_mapping = shift(@_);
     912    my $id_to_name_mapping = shift(@_);
    913913    my $id_to_extra_mapping = shift(@_);
    914914
     
    916916    print BROWSER_MACROFILE "_cicstaticbrowser_ {\n";
    917917
    918     my %letter_to_names_mapping;
    919     foreach my $name (keys %$name_to_id_mapping) {
     918    my %letter_to_ids_mapping;
     919    foreach my $id (keys %$id_to_name_mapping) {
     920    my $name = $id_to_name_mapping->{$id};
    920921    my ($letter) = ($name =~ /([A-Za-z0-9])/);
    921     push(@{$letter_to_names_mapping{$letter}}, $name);
     922    push(@{$letter_to_ids_mapping{$letter}}, $id);
    922923    }
    923924
    924925    print BROWSER_MACROFILE "<center><b>";
    925926    foreach my $letter (split(//, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")) {
    926     if (defined($letter_to_names_mapping{$letter})) {
     927    if (defined($letter_to_ids_mapping{$letter})) {
    927928        print BROWSER_MACROFILE "<a href=\"#$letter\">$letter</a>&nbsp;";
    928929    }
     
    934935
    935936    print BROWSER_MACROFILE "<table cellpadding=\"0\" cellspacing=\"0\" width=\"_pagewidth_\">\n";
    936     foreach my $letter (sort(keys %letter_to_names_mapping)) {
    937     my @letter_names = sort(@{$letter_to_names_mapping{$letter}});
    938     &write_static_browser_macros_chunk($letter, \@letter_names, $name_to_id_mapping, $id_to_extra_mapping);
     937    foreach my $letter (sort(keys %letter_to_ids_mapping)) {
     938    my @letter_ids = @{$letter_to_ids_mapping{$letter}};
     939    &write_static_browser_macros_chunk($letter, \@letter_ids, $id_to_name_mapping, $id_to_extra_mapping);
    939940    }
    940941    print BROWSER_MACROFILE "</table>\n";
     
    947948{
    948949    my $chunk_title = shift(@_);
    949     my $chunk_names_ref = shift(@_);
    950     my $name_to_id_mapping = shift(@_);
     950    my $chunk_ids_ref = shift(@_);
     951    my $id_to_name_mapping = shift(@_);
    951952    my $id_to_extra_mapping = shift(@_);
    952953
    953954    print BROWSER_MACROFILE "<tr><td width=\"50%\"><br /><a name=\"$chunk_title\"/><span style=\"color: black;\"><b>$chunk_title</b></span></td><td width=\"50%\"></td></tr>\n";
    954955
    955     my @chunk_names = @{$chunk_names_ref};
    956     my $half_point = ((scalar(@chunk_names) % 2 == 0) ? scalar(@chunk_names) / 2 : (scalar(@chunk_names) + 1) / 2);
     956    my @chunk_ids = @{$chunk_ids_ref};
     957    my $half_point = ((scalar(@chunk_ids) % 2 == 0) ? scalar(@chunk_ids) / 2 : (scalar(@chunk_ids) + 1) / 2);
    957958    for (my $i = 0; $i < $half_point; $i++) {
    958959    print BROWSER_MACROFILE "<tr>";
    959960
    960     my $name = $chunk_names[$i];
    961     my $id = $name_to_id_mapping->{$name};
     961    my $id = $chunk_ids[$i];
     962    my $name = $id_to_name_mapping->{$id};
    962963    my $extra = "";
    963964    if (defined($id_to_extra_mapping)) {
     
    966967    print BROWSER_MACROFILE "<td valign=\"top\"><a href=\"_gwcgi_?a=d&d=$id\">$name</a>$extra</td>";
    967968
    968     $name = $chunk_names[$i+$half_point];
    969     if (defined($name)) {
    970         $id = $name_to_id_mapping->{$name};
     969    $id = $chunk_ids[$i+$half_point];
     970    if (defined($id)) {
     971        $name = $id_to_name_mapping->{$id};
    971972        $extra = "";
    972973        if (defined($id_to_extra_mapping)) {
     
    987988{
    988989    my $static_browser_package_root = shift(@_);
    989     my $category_to_names_mapping = shift(@_);
    990     my $name_to_id_mapping = shift(@_);
     990    my $category_to_ids_mapping = shift(@_);
     991    my $id_to_name_mapping = shift(@_);
    991992    my $id_to_extra_mapping = shift(@_);
    992993
     
    995996    open(BROWSER_MACROFILE, ">$static_browser_macrofile_path") or die "Error: Could not write to $static_browser_macrofile_path.\n";
    996997
    997     foreach my $category (keys(%{$category_to_names_mapping})) {
     998    foreach my $category (keys(%{$category_to_ids_mapping})) {
    998999    my $static_browser_package_name = $static_browser_package_root . $category;
    9991000    $static_browser_package_name =~ s/\W//g;
    10001001
    1001     my %name_to_id_mapping_for_category = ();
    1002     foreach my $name (sort(@{$category_to_names_mapping->{$category}})) {
    1003         $name_to_id_mapping_for_category{$name} = $name_to_id_mapping->{$name};
    1004     }
    1005     &write_static_browser_macros($static_browser_package_name, \%name_to_id_mapping_for_category, $id_to_extra_mapping);
     1002    my %id_to_name_mapping_for_category = ();
     1003    foreach my $id (@{$category_to_ids_mapping->{$category}}) {
     1004        $id_to_name_mapping_for_category{$id} = $id_to_name_mapping->{$id};
     1005    }
     1006    &write_static_browser_macros($static_browser_package_name, \%id_to_name_mapping_for_category, $id_to_extra_mapping);
    10061007    }
    10071008
     
    10131014{
    10141015    my $static_browser_package_name = shift(@_);
    1015     my $state_to_names_mapping = shift(@_);
    1016     my $name_to_id_mapping = shift(@_);
     1016    my $state_to_ids_mapping = shift(@_);
     1017    my $id_to_name_mapping = shift(@_);
    10171018
    10181019    my $static_browser_macrofile_path = "$ENV{'GSDLHOME'}\\collect\\cic-hcap\\macros\\$static_browser_package_name.dm";
     
    10231024
    10241025    print BROWSER_MACROFILE "<table cellpadding=\"0\" cellspacing=\"0\" width=\"_pagewidth_\">\n";
    1025     foreach my $state (sort(keys(%{$state_to_names_mapping}))) {
    1026     my @state_names = sort(@{$state_to_names_mapping->{$state}});
    1027     &write_static_browser_macros_chunk($state, \@state_names, $name_to_id_mapping, undef);
     1026    foreach my $state (sort(keys(%{$state_to_ids_mapping}))) {
     1027    my @state_ids = @{$state_to_ids_mapping->{$state}};
     1028    &write_static_browser_macros_chunk($state, \@state_ids, $id_to_name_mapping, undef);
    10281029    }
    10291030    print BROWSER_MACROFILE "</table>\n";
Note: See TracChangeset for help on using the changeset viewer.