Changeset 21856

Show
Ignore:
Timestamp:
31.03.2010 23:08:43 (9 years ago)
Author:
davidb
Message:

read_infodb_entry() implemented for sqlite. new write_infodb_rawentry() added for main dbutil.dm class

Location:
main/trunk/greenstone2/perllib
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/dbutil.pm

    r21550 r21856  
    226226 
    227227 
     228sub write_infodb_rawentry 
     229{ 
     230  my $infodb_type = shift(@_); 
     231  my $infodb_handle = shift(@_); 
     232  my $infodb_key = shift(@_); 
     233  my $infodb_val = shift(@_); 
     234 
     235  if ($infodb_type eq "sqlite") 
     236  { 
     237    require dbutil::sqlite; 
     238    return &dbutil::sqlite::write_infodb_rawentry($infodb_handle, $infodb_key, $infodb_val, @_); 
     239  } 
     240  elsif ($infodb_type eq "gdbm-txtgz") 
     241  { 
     242    require dbutil::gdbmtxtgz; 
     243    return &dbutil::gdbmtxtgz::write_infodb_rawentry($infodb_handle, $infodb_key, $infodb_val, @_); 
     244  } 
     245  elsif ($infodb_type eq "jdbm") 
     246  { 
     247    require dbutil::jdbm; 
     248    return &dbutil::jdbm::write_infodb_rawentry($infodb_handle, $infodb_key, $infodb_val, @_); 
     249  } 
     250  elsif ($infodb_type eq "mssql") 
     251  { 
     252    require dbutil::mssql; 
     253    return &dbutil::mssql::write_infodb_rawentry($infodb_handle, $infodb_key, $infodb_val, @_); 
     254  } 
     255 
     256  # Use GDBM if the infodb type is empty or not one of the values above 
     257  require dbutil::gdbm; 
     258  return &dbutil::gdbm::write_infodb_rawentry($infodb_handle, $infodb_key, $infodb_val, @_); 
     259} 
     260 
     261 
     262 
    228263sub delete_infodb_entry 
    229264{ 
  • main/trunk/greenstone2/perllib/dbutil/gdbm.pm

    r21545 r21856  
    132132} 
    133133 
     134sub write_infodb_rawentry 
     135{ 
     136  # With infodb_handle already set up, works the same as _gdbm_txtgz version 
     137  &dbutil::gdbmtxtgz::write_infodb_rawentry(@_); 
     138} 
     139 
     140 
    134141sub delete_infodb_entry 
    135142{ 
  • main/trunk/greenstone2/perllib/dbutil/gdbmtxtgz.pm

    r21411 r21856  
    138138 
    139139 
     140     
     141sub write_infodb_rawentry 
     142{ 
     143 
     144  my $infodb_handle = shift(@_); 
     145  my $infodb_key = shift(@_); 
     146  my $infodb_val = shift(@_); 
     147   
     148  print $infodb_handle "[$infodb_key]\n"; 
     149  print $infodb_handle "$infodb_val\n"; 
     150  print $infodb_handle '-' x 70, "\n"; 
     151} 
     152 
     153 
     154 
    140155sub delete_infodb_entry 
    141156{ 
  • main/trunk/greenstone2/perllib/dbutil/jdbm.pm

    r21411 r21856  
    181181 
    182182 
     183sub write_infodb_rawentry 
     184{ 
     185 
     186  my $infodb_handle = shift(@_); 
     187  my $infodb_key = shift(@_); 
     188  my $infodb_val = shift(@_); 
     189   
     190  print $infodb_handle "[$infodb_key]\n"; 
     191  print $infodb_handle "$infodb_val\n"; 
     192  print $infodb_handle '-' x 70, "\n"; 
     193} 
     194 
     195 
    183196sub delete_infodb_entry 
    184197{ 
  • main/trunk/greenstone2/perllib/dbutil/mssql.pm

    r21411 r21856  
    140140  my $infodb_map = shift(@_); 
    141141 
    142   # !! TO IMPLEMENT 
     142  print STDERR "******* mssql::read_infodb_file() TO BE IMPLEMENTED!\n"; 
     143  print STDERR "******* See sqlite.pm for comparable implementation that has been coded up!\n"; 
    143144} 
    144145 
     
    199200} 
    200201 
     202 
     203sub write_infodb_rawentry 
     204{ 
     205  my $infodb_handle = shift(@_); 
     206  my $infodb_key = shift(@_); 
     207  my $infodb_val = shift(@_); 
     208   
     209  # Prepare the query 
     210  my $safe_infodb_key = &mssql_safe($infodb_key); 
     211  my $query = "INSERT INTO " . $mssql_data_table_name . " (one_key, one_value) VALUES (N'" . $safe_infodb_key . "', N'" . &mssql_safe($infodb_val) . "')"; 
     212  dbquery($infodb_handle, $query); 
     213} 
     214 
    201215sub delete_infodb_entry 
    202216{ 
  • main/trunk/greenstone2/perllib/dbutil/sqlite.pm

    r21411 r21856  
    7272 
    7373 
     74sub read_infodb_cmd 
     75{ 
     76  my $infodb_file_path = shift(@_); 
     77  my $sqlcmd = shift(@_); 
     78 
     79  my $result = ""; 
     80 
     81  my $sqlite3_exe = &util::filename_cat($ENV{'GSDLHOME'},"bin",$ENV{'GSDLOS'}, "sqlite3" . &util::get_os_exe()); 
     82  my $infodb_handle = undef; 
     83  my $cmd = "echo \"$sqlcmd\" | \"$sqlite3_exe\" \"$infodb_file_path\""; 
     84 
     85  if (!-e "$sqlite3_exe" || !open($infodb_handle, "$cmd |")) 
     86  { 
     87      print STDERR "Unable to execute: $cmd\n"; 
     88      print STDERR "$!\n"; 
     89  } 
     90  else { 
     91 
     92      my $line; 
     93      while (defined($line=<$infodb_handle>)) { 
     94      $result .= $line; 
     95      } 
     96 
     97      close($infodb_handle); 
     98  } 
     99 
     100  return $result; 
     101} 
     102 
    74103sub get_infodb_file_path 
    75104{ 
     
    88117  my $infodb_map = shift(@_); 
    89118 
    90   # !! TO IMPLEMENT 
     119 
     120  my $keys_str = read_infodb_cmd($infodb_file_path,"SELECT key FROM data;"); 
     121 
     122  my @keys = split(/\n/,$keys_str); 
     123 
     124  foreach my $k (@keys) { 
     125       
     126      my $k_safe = &sqlite_safe($k); 
     127      my $select_val_cmd = "SELECT value FROM data WHERE key='$k_safe';"; 
     128 
     129      my $val_str = read_infodb_cmd($infodb_file_path,$select_val_cmd); 
     130 
     131      $infodb_map->{$k} = $val_str; 
     132  } 
     133 
    91134} 
    92135 
     
    146189 
    147190 
     191sub write_infodb_rawentry 
     192{ 
     193  my $infodb_handle = shift(@_); 
     194  my $infodb_key = shift(@_); 
     195  my $infodb_val = shift(@_); 
     196 
     197  my $safe_infodb_key = &sqlite_safe($infodb_key); 
     198  print $infodb_handle "INSERT OR REPLACE INTO data (key, value) VALUES ('" . $safe_infodb_key . "', '" . &sqlite_safe($infodb_val) . "');\n"; 
     199} 
     200 
     201 
     202 
    148203sub delete_infodb_entry 
    149204{