Ignore:
Timestamp:
2018-10-24T20:11:33+13:00 (6 years ago)
Author:
ak19
Message:

First commit to do with reading back in from the SQL DB. This commit introduces the new GreenstoneSQLPlugin for this purpose, which should ideally only be used during buildcol (but its init(), deinit() and read() methods are also called on import.pl). The new plugin works with GreenstoneSQLPlugout which wrote meta and txt to the SQL DB. Lots of TODOs and questions still here, some debug statements too. Also have to run some decisions by Dr Bainbridge. There are many hardcoded values which still have to be parameterised (not always completely sure how) and still have to test the 2 cases of sending just meta and just fulltxt to db. Next commit will tidy some things up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugouts/GreenstoneSQLPlugout.pm

    r32533 r32536  
    4040
    4141# TODO: SIGTERM rollback and disconnect?
    42 
     42# TODO Q: what about verbosity for debugging
    4343
    4444# this plugout does not output xml to a file, but outputs rows into a mysql table
     
    146146    if(!$gs_sql->load_db_and_tables($db_name, $build_mode)) {
    147147   
    148     # This is fatal for the plugout, let's terminate here
    149     # PrintError would already have displayed the warning message on connection fail   
    150     die("Could not use db or prepare its tables. Can't proceed.\n");
     148    # This is fatal for the plugout, let's terminate here after disconnecting again
     149    # PrintError would already have displayed the warning message on load fail
     150    $gs_sql->disconnect_from_db()
     151        || warn("Unable to disconnect from database " . $self->{'site_name'} . "\n");
     152    die("Could not use db $db_name and/or prepare its tables. Can't proceed.\n");
    151153    }
    152154
     
    184186    $self->{'gs_sql'}->disconnect_from_db() || warn("Unable to disconnect from database " . $self->{'site_name'} . "\n"); # disconnect_from_db() will also issue a warning, but this may be clearer
    185187}
    186  
    187 # produce files called docsql.xml instead of doc.xml
    188 sub get_short_doc_file {
     188
     189# produce files called docsql-<OID>.xml instead of doc.xml
     190sub get_doc_xml_filename {
    189191    my $self = shift (@_);
    190     my ($doc_dir) = @_;
    191     return &FileUtils::filenameConcatenate($doc_dir, "docsql.xml");
    192 }
    193 
    194 # produce files called docsql.xml instead of doc.xml
    195 sub get_output_file {
    196     my $self = shift (@_);
    197     my ($doc_dir) = @_;
    198     return &FileUtils::filenameConcatenate($self->{'output_dir'}, $doc_dir, "docsql.xml");
     192    my ($doc_obj) = @_;
     193   
     194    my $doc_id = $doc_obj->get_OID();
     195    my $filename = $doc_id ? "docsql-".$doc_id.".xml" : "docsql.xml";
     196    return $filename;
    199197}
    200198   
     
    204202    my ($doc_obj, $doc_dir) = @_;
    205203
    206     print STDERR "\n\n@@@ In saveas\n\n";
     204#    print STDERR "\n\n@@@ In saveas\n\n";
    207205   
    208206    my $proc_mode = $self->{'process_mode'};
     
    291289    foreach my $data (@{$section_ptr->{'metadata'}}) {
    292290        my $meta_name = $data->[0];
     291        # TODO: does it need to be stored escaped, as it requires unescaping when read back in
     292        # from db (unlike for reading back in from doc.xml)
    293293        my $escaped_meta_value = &docprint::escape_text($data->[1]);
    294294
Note: See TracChangeset for help on using the changeset viewer.