Changeset 18441 for gsdl/trunk/perllib/arcinfo.pm
- Timestamp:
- 2009-02-01T14:36:22+13:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/perllib/arcinfo.pm
r15889 r18441 42 42 use strict; 43 43 44 use dbutil; 44 45 45 46 # File format read in: OID <tab> Filename <tab> Optional-Index-Status … … 60 61 } 61 62 62 sub load_info { 63 my $self = shift (@_); 64 my ($filename) = @_; 65 66 $self->{'info'} = {}; 67 63 sub _load_info_txt 64 { 65 my $self = shift (@_); 66 my ($filename) = @_; 67 68 68 if (defined $filename && -e $filename) { 69 69 open (INFILE, $filename) || … … 80 80 close (INFILE); 81 81 } 82 } 83 84 sub save_info { 82 83 84 } 85 86 sub _load_info_gdbm 87 { 88 my $self = shift (@_); 89 my ($filename) = @_; 90 91 my $infodb_map = {}; 92 93 &dbutil::read_infodb_file_gdbm($filename,$infodb_map); 94 95 foreach my $oid ( keys %$infodb_map ) { 96 my $vals = $infodb_map->{$oid}; 97 # interested in doc-file and index-status 98 99 my ($doc_file) = ($vals=~/^<doc-file>(.*)$/m); 100 my ($index_status) = ($vals=~/^<index-status>(.*)$/m); 101 $self->add_info ($oid,$doc_file,$index_status); 102 } 103 } 104 105 sub load_info { 106 my $self = shift (@_); 107 my ($filename) = @_; 108 109 $self->{'info'} = {}; 110 111 if ((defined $filename) && (-e $filename)) { 112 if ($filename =~ m/\.inf$/) { 113 $self->_load_info_txt($filename); 114 } 115 else { 116 $self->_load_info_gdbm($filename); 117 } 118 } 119 } 120 121 sub _load_filelist_gdbm 122 { 123 my $self = shift (@_); 124 my ($filename) = @_; 125 126 my $infodb_map = {}; 127 128 &dbutil::read_infodb_keys_gdbm($filename,$infodb_map); 129 130 foreach my $file ( keys %$infodb_map ) { 131 $self->{'import_filelist'}->{$file} = 1; 132 } 133 } 134 135 136 sub load_import_filelist { 137 my $self = shift (@_); 138 my ($filename) = @_; 139 140 $self->{'import-filelist'} = {}; 141 142 if ((defined $filename) && (-e $filename)) { 143 if ($filename =~ m/\.inf$/) { 144 # e.g. 'archives-src.inf' (which includes complete list of file 145 # from last time import.pl was run) 146 $self->_load_info_txt($filename); 147 } 148 else { 149 $self->_load_filelist_gdbm($filename); 150 } 151 } 152 } 153 154 sub _save_info_txt { 85 155 my $self = shift (@_); 86 156 my ($filename) = @_; … … 97 167 } 98 168 close (OUTFILE); 169 } 170 171 sub _save_info_gdbm { 172 my $self = shift (@_); 173 my ($filename) = @_; 174 175 # Not the most efficient operation, but will do for now 176 177 # read it in 178 my $infodb_map = {}; 179 &dbutil::read_infodb_file_gdbm($filename,$infodb_map); 180 181 # change index-status values 182 foreach my $info (@{$self->get_OID_list()}) { 183 if (defined $info) { 184 my ($oid,$doc_file,$index_status) = @$info; 185 if (defined $infodb_map->{$oid}) { 186 my $vals_ref = \$infodb_map->{$oid}; 187 $$vals_ref =~ s/^<index-status>(.*)$/<index-status>$index_status/m; 188 } 189 else { 190 print STDERR "Warning: $filename does not have key $oid\n"; 191 } 192 } 193 } 194 195 196 # write out again 197 my $infodb_handle = &dbutil::open_infodb_write_handle_gdbm($filename); 198 foreach my $oid ( keys %$infodb_map ) { 199 # consider making the following a method in dbutil 200 # e.g. write_infodb_rawentry_gdbm($infodb_handle,$oid,$vals); 201 202 # no need to escape, as $infodb_map->{$oid} hasn't been unescaped 203 print $infodb_handle "[$oid]\n"; 204 print $infodb_handle $infodb_map->{$oid}; 205 print $infodb_handle '-' x 70, "\n"; 206 } 207 &dbutil::close_infodb_write_handle_gdbm($infodb_handle); 208 209 } 210 211 sub save_info { 212 my $self = shift (@_); 213 my ($filename) = @_; 214 215 if ($filename =~ m/\.inf$/) { 216 $self->_save_info_txt($filename); 217 } 218 else { 219 $self->_save_info_gdbm($filename); 220 } 99 221 } 100 222
Note:
See TracChangeset
for help on using the changeset viewer.