Ignore:
Timestamp:
2010-05-06T12:58:19+12:00 (14 years ago)
Author:
davidb
Message:

Updating of code to support sql-query filter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/runtime-src/src/colservr/sqlbrowsefilter.cpp

    r16310 r22050  
    33 * sqlbrowsefilter.cpp --
    44 * Copyright (C) 2008  DL Consulting Ltd
     5 * Copyright (C) 2010  New Zealand Digital Library Project
    56 *
    67 * A component of the Greenstone digital library software
     
    2526
    2627#include "sqlbrowsefilter.h"
    27 #include "fileutil.h"
    28 
    2928
    3029sqlbrowsefilterclass::sqlbrowsefilterclass ()
    31 {
    32   sql_db_ptr = NULL;
    33 }
     30  : sqlfilterclass()
     31{}
    3432
    3533
    3634sqlbrowsefilterclass::~sqlbrowsefilterclass ()
    37 {
    38 }
    39 
    40 
    41 void sqlbrowsefilterclass::configure (const text_t &key, const text_tarray &cfgline)
    42 {
    43   filterclass::configure (key, cfgline);
    44 
    45   if (key == "indexstem")
    46   {
    47     indexstem = cfgline[0];
    48   }
    49 }
    50 
    51 
    52 bool sqlbrowsefilterclass::init (ostream &logout)
    53 {
    54   outconvertclass text_t2ascii;
    55 
    56   if (!filterclass::init(logout)) return false;
    57 
    58   if (sql_db_ptr == NULL)
    59   {
    60     // most likely a configuration problem
    61     logout << text_t2ascii << "configuration error: sqlbrowsefilter contains a null sqldbclass\n\n";
    62     return false;
    63   }
    64 
    65   if (indexstem.empty())
    66   {
    67     indexstem = collection;
    68   }
    69 
    70   // get the filename for the database and make sure it exists
    71   sql_db_filename = resolve_db_filename(indexstem,sql_db_ptr->getfileextension());
    72   if (!file_exists(sql_db_filename))
    73   {
    74     logout << text_t2ascii << "warning: database \"" << sql_db_filename << "\" does not exist\n\n";
    75     return false;
    76   }
    77 
    78   return true;
    79 }
    80 
     35{}
    8136
    8237void sqlbrowsefilterclass::filter (const FilterRequest_t &request,
     
    8641  outconvertclass text_t2ascii;
    8742
    88   response.clear();
    89   err = noError;
    90 
    91   if (sql_db_ptr == NULL) {
    92     // most likely a configuration problem
    93     logout << text_t2ascii << "configuration error: sqlbrowsefilter contains a null sqldbclass\n\n";
    94     err = configurationError;
    95     return;
    96   }
    97 
    98   // open the database
    99   sql_db_ptr->setlogout (&logout);
    100   if (!sql_db_ptr->opendatabase (sql_db_filename, DB_READER, 100, false)) {
    101     // most likely a system problem (we have already checked that the database exists)
    102     logout << text_t2ascii << "system problem: open on database \"" << sql_db_filename << "\" failed\n\n";
    103     err = systemProblem;
     43  if (!connect_to_sqldb(response,err,logout)) {
    10444    return;
    10545  }
     
    201141  }
    202142
    203   sql_db_ptr->closedatabase();  // Important that local library doesn't leave any files open
     143  disconnect_from_sqldb();
     144
    204145}
Note: See TracChangeset for help on using the changeset viewer.