/[webpac]/trunk2/all2all.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk2/all2all.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 54 by dpavlin, Mon Jun 23 20:20:32 2003 UTC revision 59 by dpavlin, Fri Jul 4 17:57:11 2003 UTC
# Line 18  die "FATAL: can't find configuration fil Line 18  die "FATAL: can't find configuration fil
18    
19  my $config;  my $config;
20    
21  use index_DBI;  # there is no other, right now ;-)  #use index_DBI;         # default DBI module for index
22    use index_DBI_cache;    # faster DBI module using memory cache
23  my $index;  my $index;
24    
25  my %opts;  my %opts;
# Line 33  getopts('d:m:qs', \%opts); Line 34  getopts('d:m:qs', \%opts);
34    
35  my $path;       # this is name of database  my $path;       # this is name of database
36    
37  Text::Iconv->raise_error(1);     # Conversion errors raise exceptions  Text::Iconv->raise_error(0);     # Conversion errors don't raise exceptions
38    
39  # this is encoding of all files on disk, including import_xml/*.xml file and  # this is encoding of all files on disk, including import_xml/*.xml file and
40  # filter/*.pm files! It will be used to store strings in perl internally!  # filter/*.pm files! It will be used to store strings in perl internally!
# Line 65  sub data2xml { Line 66  sub data2xml {
66          my $type = shift @_;          my $type = shift @_;
67          my $row = shift @_;          my $row = shift @_;
68          my $add_xml = shift @_;          my $add_xml = shift @_;
69            # needed to read values from configuration file
70            my $cfg = shift @_;
71            my $database = shift @_;
72    
73          my $xml;          my $xml;
74    
# Line 169  sub data2xml { Line 173  sub data2xml {
173                          }                          }
174                  }                  }
175    
176                    # now try to parse variables from configuration file
177                    foreach my $x (@{$config->{indexer}->{$field}->{'config'}}) {
178    
179                            my $val = $cfg->val($database, x($x->{content}));
180    
181                            my ($s,$d,$i) = (1,1,0);        # swish, display default
182                            $s = 0 if (lc($x->{type}) eq "display");
183                            $d = 0 if (lc($x->{type}) eq "swish");
184                            ($s,$d,$i) = (0,0,1) if (lc($x->{type}) eq "index");
185    
186                            if ($val) {
187                                    $display_data .= $val if ($d);
188                                    $swish_data .= $val if ($s);
189                                    $index->insert($field, $val, $path) if ($i);
190                            }
191    
192                    }
193    
194    
195                  if ($display_data) {                  if ($display_data) {
196    
# Line 240  foreach my $database ($cfg->Sections) { Line 262  foreach my $database ($cfg->Sections) {
262    
263  print STDERR "reading ./import_xml/$type.xml\n";  print STDERR "reading ./import_xml/$type.xml\n";
264    
265          $config=XMLin("./import_xml/$type.xml", forcearray => [ $type2tag{$type} ], forcecontent => 1);          # extract just type basic
266            my $type_base = $type;
267            $type_base =~ s/_.+$//g;
268    
269            $config=XMLin("./import_xml/$type.xml", forcearray => [ $type2tag{$type_base}, 'config' ], forcecontent => 1);
270    
271          # output current progress indicator          # output current progress indicator
272          my $last_p = 0;          my $last_p = 0;
273          sub progress {          sub progress {
274                  #return if (! $opts{q});        # FIXME                  #return if (! $opts{q});        # FIXME
275                  my $current = shift;                  my $current = shift;
276                  my $total = shift;                  my $total = shift || 1;
277                  my $p = int($current * 100 / $total);                  my $p = int($current * 100 / $total);
278                  if ($p != $last_p) {                  if ($p != $last_p) {
279                          printf STDERR ("%5d / %5d [%-51s] %-2d %% \r",$current,$total,"=" x ($p/2).">", $p );                          printf STDERR ("%5d / %5d [%-51s] %-2d %% \r",$current,$total,"=" x ($p/2).">", $p );
# Line 258  print STDERR "reading ./import_xml/$type Line 284  print STDERR "reading ./import_xml/$type
284          # now read database          # now read database
285  print STDERR "using: $type...\n";  print STDERR "using: $type...\n";
286    
287          if ($type eq "isis") {          if ($type_base eq "isis") {
288    
289                  my $isis_db = $cfg -> val($database, 'isis_db') || die "$database doesn't have 'isis_db' defined!";                  my $isis_db = $cfg -> val($database, 'isis_db') || die "$database doesn't have 'isis_db' defined!";
290    
291                  $import2cp = Text::Iconv->new($config->{isis_codepage},$codepage);                  $import2cp = Text::Iconv->new($config->{isis_codepage},$codepage);
# Line 278  print STDERR "using: $type...\n"; Line 305  print STDERR "using: $type...\n";
305    
306                                  my $swishpath = $path."#".int($row->{mfn});                                  my $swishpath = $path."#".int($row->{mfn});
307    
308                                  if (my $xml = data2xml($type,$row,$add_xml)) {                                  if (my $xml = data2xml($type_base,$row,$add_xml,$cfg,$database)) {
309                                          $xml = $cp2utf->convert($xml);                                          $xml = $cp2utf->convert($xml);
310                                          use bytes;      # as opposed to chars                                          use bytes;      # as opposed to chars
311                                          print "Path-Name: $swishpath\n";                                          print "Path-Name: $swishpath\n";
# Line 289  print STDERR "using: $type...\n"; Line 316  print STDERR "using: $type...\n";
316                  }                  }
317                  print STDERR "\n";                  print STDERR "\n";
318    
319          } elsif ($type eq "excel") {          } elsif ($type_base eq "excel") {
320                  use Spreadsheet::ParseExcel;                  use Spreadsheet::ParseExcel;
321                  use Spreadsheet::ParseExcel::Utility qw(int2col);                  use Spreadsheet::ParseExcel::Utility qw(int2col);
322                                    
# Line 297  print STDERR "using: $type...\n"; Line 324  print STDERR "using: $type...\n";
324                  my $excel_file = $cfg -> val($database, 'excel_file') || die "$database doesn't have 'excel_file' defined!";                  my $excel_file = $cfg -> val($database, 'excel_file') || die "$database doesn't have 'excel_file' defined!";
325    
326                  my $sheet = x($config->{sheet}) || die "no sheet in $type.xml";                  my $sheet = x($config->{sheet}) || die "no sheet in $type.xml";
327                  my $start_row = x($config->{start_row}) || die "no start_row in $type.xml";                  my $start_row = x($config->{start_row}) - 1 || die "no start_row in $type.xml";
328    
329                  my $oBook = Spreadsheet::ParseExcel::Workbook->Parse($excel_file) || die "can't open Excel file '$excel_file'";                  my $oBook = Spreadsheet::ParseExcel::Workbook->Parse($excel_file) || die "can't open Excel file '$excel_file'";
330    
# Line 314  print STDERR "using: $type...\n"; Line 341  print STDERR "using: $type...\n";
341                  defined ($oWorksheet) || die "can't find sheet '$sheet' in $excel_file";                  defined ($oWorksheet) || die "can't find sheet '$sheet' in $excel_file";
342                  my $end_row = x($config->{end_row}) || $oWorksheet->{MaxRow};                  my $end_row = x($config->{end_row}) || $oWorksheet->{MaxRow};
343    
344                  for(my $iR = $oWorksheet->{MinRow} ; defined $end_row && $iR <= $end_row ; $iR++) {                  for(my $iR = $start_row ; defined $end_row && $iR <= $end_row ; $iR++) {
345                          my $row;                          my $row;
346                          for(my $iC = $oWorksheet->{MinCol} ; defined $oWorksheet->{MaxCol} && $iC <= $oWorksheet->{MaxCol} ; $iC++) {                          for(my $iC = $oWorksheet->{MinCol} ; defined $oWorksheet->{MaxCol} && $iC <= $oWorksheet->{MaxCol} ; $iC++) {
347                                  my $cell = $oWorksheet->{Cells}[$iR][$iC];                                  my $cell = $oWorksheet->{Cells}[$iR][$iC];
# Line 335  print STDERR "using: $type...\n"; Line 362  print STDERR "using: $type...\n";
362    
363                          next if (! $row);                          next if (! $row);
364    
365                          if (my $xml = data2xml($type,$row,$add_xml)) {                          if (my $xml = data2xml($type_base,$row,$add_xml,$cfg,$database)) {
366                                  $xml = $cp2utf->convert($xml);                                  $xml = $cp2utf->convert($xml);
367                                  use bytes;      # as opposed to chars                                  use bytes;      # as opposed to chars
368                                  print "Path-Name: $swishpath\n";                                  print "Path-Name: $swishpath\n";

Legend:
Removed from v.54  
changed lines
  Added in v.59

  ViewVC Help
Powered by ViewVC 1.1.26