/[registar]/convert.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 /convert.pl

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

revision 1.1.1.1 by ravilov, Tue Jun 12 08:38:53 2001 UTC revision 1.7 by dpavlin, Tue Jun 19 13:39:05 2001 UTC
# Line 3  use strict; Line 3  use strict;
3  $| = 1;  $| = 1;
4    
5  my $debug = 0;  my $debug = 0;
6  my $raise = 1;  my $raise = 0;
7  my $log = "log";  my $log = "log";
8  my $xbase = "./registar";  my $xbase = "./registar";
9  my $db = "registar";  my $db = "registar";
10    my $refresh_timeout = 10;
11    
12  open(LOG, ">$log") || die "can't open log: $!";  open(LOG, ">$log") || die "can't open log: $!";
13    
# Line 15  my $xbdbh = DBI->connect("DBI:XBase:$xba Line 16  my $xbdbh = DBI->connect("DBI:XBase:$xba
16          { 'RaiseError' => $raise }) || die $DBI::errstr;          { 'RaiseError' => $raise }) || die $DBI::errstr;
17  my $pgdbh = DBI->connect("DBI:Pg:dbname=$db", "dpavlin", "",  my $pgdbh = DBI->connect("DBI:Pg:dbname=$db", "dpavlin", "",
18          { 'RaiseError' => $raise }) || die $DBI::errstr;          { 'RaiseError' => $raise }) || die $DBI::errstr;
19  # $SIG{'__WARN__'} = sub { };   # inhibit DBI warnings.  $SIG{'__WARN__'} = sub { };     # inhibit DBI warnings.
20    
21  my @tables = ();  my @tables = ();
22  if (@ARGV > 0) {  if (@ARGV > 0) {
# Line 44  sub ConvertDate { Line 45  sub ConvertDate {
45                  # $dt = "NULL";                  # $dt = "NULL";
46                  $dt = undef;                  $dt = undef;
47          }          }
48          return $pgdbh->quote($dt);          return $dt;
49  }  }
50    
51  sub ConvertBool {  sub ConvertBool {
# Line 56  sub ConvertBool { Line 57  sub ConvertBool {
57    
58  sub ConvertString {  sub ConvertString {
59          my $str = join("\n", @_);          my $str = join("\n", @_);
60          $str =~ s/(^[\x00-\x1F]+|[\x00-\x1F]+$)//gs;          $str =~ s/[\x00-\x1F]+//gs;
61          $str =~ s/\s*\x8D?\s*\r?\s*\n\s*/\n/gs;          $str =~ s/\s*\x8D?\s*\r?\s*\n\s*/\n/gs;
62          $str =~ s/(^\s+|\s+$)//gs;          $str =~ s/(^\s+|\s+$)//gs;
63          $str =~ s/(^"|"$)//g;          $str =~ s/(^["']|["']$)//g;
64          # char recoding          # char recoding
65          #$str =~ s/đ/ð/g;          #$str =~ s/đ/ð/g;
66          #$str =~ s/č/è/g;          #$str =~ s/č/è/g;
67          #$str =~ s/ý/¾/g;          #$str =~ s/ý/¾/g;
68          $str =~ tr/{|`~}[\\@^]/¹ð¾èæ©Ð®ÈÆ/;          $str =~ tr/{|`~}[\\@^]/¹ð¾èæ©Ð®ÈÆ/;
69          return $pgdbh->quote($str);  #       return $pgdbh->quote($str);
70            return $str;
71  }  }
72    
73  sub Progress {  sub Progress {
# Line 79  sub Log { Line 81  sub Log {
81          return "$msg\n";          return "$msg\n";
82  }  }
83    
84    sub CondInsert {
85            my $table = shift @_;
86            my $name = shift @_;
87            my $key = shift @_;
88            my $fields = shift @_;
89            my @values=@_;          # chop argument(s) are values array
90            my $sql = "SELECT count($name) FROM $table WHERE ($name = ?)";
91            my $sth = $pgdbh->prepare($sql);
92            my $ret = $sth->execute($key);
93            my ($cnt) = $sth->fetchrow_array();
94            return 0 if (!$cnt == 0);
95            my @valtpl;
96            for (my $i=0; $i<=$#values; $i++) { push @valtpl,"?" }
97            $sql = "INSERT INTO $table $fields VALUES (".join(",",@valtpl).")";
98            $sth = $pgdbh->prepare($sql);
99            $ret = $sth->execute(@values);
100            my $err = $pgdbh->errstr;
101            print &Log("[$sql] [".join(",",@values)."]".$err) if ($err);
102            return $ret;
103    }
104    
105  sub tblATK {  sub tblATK {
106          my ($table, $fields, $data) = @_;          my ($table, $fields, $data) = @_;
107          my $count = 0;          my $count = 0;
108          my $sth = $pgdbh->prepare("INSERT INTO atk_inn (sifra, naziv, razno) VALUES (?, ?, ?)");          my $sth = $pgdbh->prepare("INSERT INTO $table (sifra, naziv, razno) VALUES (?, ?, ?)");
109          unless ($sth) {          unless ($sth) {
110                  print &Log("[$table-prepare] ".$pgdbh->errstr);                  print &Log("[$table-prepare] ".$pgdbh->errstr);
111                  return 0;                  return 0;
# Line 101  sub tblATK { Line 124  sub tblATK {
124                  $tmp ||= 0;                  $tmp ||= 0;
125                  $tmp = 0 if ($tmp < 0);                  $tmp = 0 if ($tmp < 0);
126                  $count += $tmp;                  $count += $tmp;
127                  if (++$refresh >= 20) {                  if (++$refresh >= $refresh_timeout) {
128                          $refresh = 0;                          $refresh = 0;
129                          print Progress($count, scalar(@$data));                          print Progress($count, scalar(@$data));
130                  }                  }
# Line 139  sub tblDFZupa { Line 162  sub tblDFZupa {
162                  }                  }
163                  $tmp = 0 if ($tmp < 0);                  $tmp = 0 if ($tmp < 0);
164                  $count += $tmp;                  $count += $tmp;
165                  if (++$refresh >= 20) {                  if (++$refresh >= $refresh_timeout) {
166                          $refresh = 0;                          $refresh = 0;
167                          print Progress($count, scalar(@$data));                          print Progress($count, scalar(@$data));
168                  }                  }
# Line 154  sub tblINN { Line 177  sub tblINN {
177    
178  sub tblLijek {  sub tblLijek {
179          my ($table, $fields, $data) = @_;          my ($table, $fields, $data) = @_;
         # ...  
         return 0;  
 }  
   
 sub tblProiz {  
         my ($table, $fields, $data) = @_;  
180          my $count = 0;          my $count = 0;
181          my $sth = $pgdbh->prepare("INSERT INTO proizvodjaci (sifra, naziv, drzava, zastupnistvo, mjesto, zip, ulica_i_broj, razno, telefon, fax) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");          my $sth = $pgdbh->prepare("INSERT INTO lijekovi (sifra, naziv, sif_atk, sif_inn, sif_proizvodjac, pakovanje, sastav_1, sastav_2, sif_nacin_izdavanja, sif_list_fond, sif_trudnoca, sif_dojencad, sif_vozac, sif_droga, cijena, sif_med, razno, glav_razno, djelovanje, indikacije, oprez) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
182          unless ($sth) {          unless ($sth) {
183                  print &Log("[$table-prepare] ".$pgdbh->errstr);                  print &Log("[$table-prepare] ".$pgdbh->errstr);
184                  return 0;                  return 0;
185          }          }
186          my $refresh = 0;          my $refresh = 0;
187          foreach my $row (@$data) {          foreach my $row (@$data) {
188                  my ($sifra, $naziv, $drzava, $zastupnistvo, $zip, $mjesto,                  my ($sifra, $nsifra, $naziv, $sif_proizvodjac, $naz_proizvodjac,
189                          $ulica_i_broj, $razno, $tel, $fax) = @$row;                          $drzava, $zastupnistvo, $mjesto, $ulica_i_broj, $sif_inn,
190                            $naz_inn, $sif_atk0, $naz_atk0, $sif_atk, $naz_atk,
191                            $pakovanje, $sastav_1, $sastav_2, $sif_nacin_izdavanja,
192                            $naz_nacin_izdavanja, $sif_list_fond, $naz_list_fond,
193                            $sif_trudnoca, $naz_trudnoca, $sif_dojencad, $naz_dojencad,
194                            $sif_vozac, $naz_vozac, $sif_droga, $cijena, $razno,
195                            $sif_med, $glav_razno, $prazno, $djelovanje, $indikacije,
196                            $oprez, $tel, $fax) = @$row;
197                  $sifra += 0;    # force numeric                  $sifra += 0;    # force numeric
198                  $naziv = &ConvertString($naziv);                  $naziv = &ConvertString($naziv);
199                    $sif_proizvodjac += 0;  # force numeric
200                    $naz_proizvodjac = &ConvertString($naz_proizvodjac);
201                  $drzava = &ConvertString($drzava);                  $drzava = &ConvertString($drzava);
202                  $zastupnistvo = &ConvertString($zastupnistvo);                  $zastupnistvo = &ConvertString($zastupnistvo);
                 $zip = &ConvertString($zip);  
203                  $mjesto = &ConvertString($mjesto);                  $mjesto = &ConvertString($mjesto);
204                  $ulica_i_broj = &ConvertString($ulica_i_broj);                  $ulica_i_broj = &ConvertString($ulica_i_broj);
205                    $sif_inn = &ConvertString($sif_inn);
206                    $naz_inn = &ConvertString($naz_inn);
207                    $sif_atk = &ConvertString($sif_atk);
208                    $naz_atk = &ConvertString($naz_atk);
209                    $pakovanje = &ConvertString($pakovanje);
210                    $sastav_1 = &ConvertString($sastav_1);
211                    $sastav_2 = &ConvertString($sastav_2);
212                    $sif_nacin_izdavanja = &ConvertString($sif_nacin_izdavanja);
213                    $naz_nacin_izdavanja = &ConvertString($naz_nacin_izdavanja);
214                    $sif_list_fond = &ConvertString($sif_list_fond);
215                    $naz_list_fond = &ConvertString($naz_list_fond);
216                    $sif_trudnoca = &ConvertString($sif_trudnoca);
217                    $naz_trudnoca = &ConvertString($naz_trudnoca);
218                    $sif_dojencad = &ConvertString($sif_dojencad);
219                    $naz_dojencad = &ConvertString($naz_dojencad);
220                    $sif_vozac = &ConvertString($sif_vozac);
221                    $naz_vozac = &ConvertString($naz_vozac);
222                    $sif_droga = &ConvertString($sif_droga);
223                    $cijena = &ConvertString($cijena);
224                  $razno = &ConvertString($razno);                  $razno = &ConvertString($razno);
225                    $sif_med += 0;  # force numeric
226                    $glav_razno = &ConvertString($glav_razno);
227                    $djelovanje = &ConvertString($djelovanje);
228                    $indikacije = &ConvertString($indikacije);
229                    $oprez = &ConvertString($oprez);
230                  $tel = &ConvertString($tel);                  $tel = &ConvertString($tel);
231                  $fax = &ConvertString($fax);                  $fax = &ConvertString($fax);
232                  my $tmp = $sth->execute($sifra, $naziv, $drzava,                  CondInsert("atk", "sifra", $sif_atk,
233                          $zastupnistvo, $zip, $mjesto, $ulica_i_broj,                          "(sifra, naziv, razno)", ($sif_atk, $naz_atk, ''));
234                          $razno, $tel, $fax);                  CondInsert("inn", "sifra", $sif_inn,
235                            "(sifra, naziv, razno)", ($sif_inn, $naz_inn, ''));
236                    CondInsert("proizvodjaci", "sifra", $sif_proizvodjac,
237                            "(sifra, naziv, drzava, zastupnistvo, mjesto, zip, ulica_i_broj, razno, telefon, fax)",
238                            ($sif_proizvodjac, $naz_proizvodjac, $drzava, $zastupnistvo, $mjesto, '', $ulica_i_broj, '', $tel, $fax));
239                    CondInsert("nacin_izdavanja", "sifra", $sif_nacin_izdavanja,
240                            "(sifra, opis)", ($sif_nacin_izdavanja, $naz_nacin_izdavanja));
241                    CondInsert("list_fond", "sifra", $sif_list_fond,
242                            "(sifra, opis)", ($sif_list_fond, $naz_list_fond));
243                    CondInsert("trudnoca", "sifra", $sif_trudnoca,
244                            "(sifra, opis)", ($sif_trudnoca, $naz_trudnoca));
245                    CondInsert("dojencad", "sifra", $sif_dojencad,
246                            "(sifra, opis)", ($sif_dojencad, $naz_dojencad));
247                    CondInsert("vozac", "sifra", $sif_vozac,
248                            "(sifra, opis)", ($sif_vozac, $naz_vozac));
249                    CondInsert("droga", "sifra", $sif_droga,
250                            "(sifra, opis)", ($sif_droga, ''));
251                    my $tmp = $sth->execute($sifra, $naziv, $sif_atk, $sif_inn,
252                            $sif_proizvodjac, $pakovanje, $sastav_1, $sastav_2,
253                            $sif_nacin_izdavanja, $sif_list_fond, $sif_trudnoca,
254                            $sif_dojencad, $sif_vozac, $sif_droga, $cijena,
255                            $sif_med, $razno, $glav_razno, $djelovanje,
256                            $indikacije, $oprez);
257                  unless (defined($tmp)) {                  unless (defined($tmp)) {
258                          print &Log("[$table-execute] ".$pgdbh->errstr);                          print &Log("[$table-execute] ".$pgdbh->errstr);
259                          next;                          next;
260                  }                  }
261                  $tmp = 0 if ($tmp < 0);                  $tmp = 0 if ($tmp < 0);
262                  $count += $tmp;                  $count += $tmp;
263                  if (++$refresh >= 20) {                  if (++$refresh >= $refresh_timeout) {
264                          $refresh = 0;                          $refresh = 0;
265                          print Progress($count, scalar(@$data));                          print Progress($count, scalar(@$data));
266                  }                  }
267          }          }
268          $sth->finish();          $sth->finish();
269          return 0;          return $count;
270  }  }
271    
272  sub tblVodeca {  sub tblProiz {
273          my ($table, $fields, $data) = @_;          my ($table, $fields, $data) = @_;
274          my $count = 0;          my $count = 0;
275          my $sth = $pgdbh->prepare("INSERT INTO vodeca (sifra, naziv) VALUES (?, ?)");          my $sth = $pgdbh->prepare("INSERT INTO proizvodjaci (sifra, naziv, drzava, zastupnistvo, mjesto, zip, ulica_i_broj, razno, telefon, fax) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
276          unless ($sth) {          unless ($sth) {
277                  print &Log("[$table-prepare] ".$pgdbh->errstr);                  print &Log("[$table-prepare] ".$pgdbh->errstr);
278                  return 0;                  return 0;
279          }          }
280          my $refresh = 0;          my $refresh = 0;
281          foreach my $row (@$data) {          foreach my $row (@$data) {
282                  my ($sifra, $naziv) = @$row;                  my ($sifra, $naziv, $drzava, $zastupnistvo, $zip, $mjesto,
283                            $ulica_i_broj, $razno, $tel, $fax) = @$row;
284                    $sifra += 0;    # force numeric
285                  $naziv = &ConvertString($naziv);                  $naziv = &ConvertString($naziv);
286                  $drzava = &ConvertString($drzava);                  $drzava = &ConvertString($drzava);
287                  $zastupnistvo = &ConvertString($zastupnistvo);                  $zastupnistvo = &ConvertString($zastupnistvo);
# Line 219  sub tblVodeca { Line 292  sub tblVodeca {
292                  $tel = &ConvertString($tel);                  $tel = &ConvertString($tel);
293                  $fax = &ConvertString($fax);                  $fax = &ConvertString($fax);
294                  my $tmp = $sth->execute($sifra, $naziv, $drzava,                  my $tmp = $sth->execute($sifra, $naziv, $drzava,
295                          $zastupnistvo, $zip, $mjesto, $ulica_i_broj,                          $zastupnistvo, $mjesto, $zip, $ulica_i_broj,
296                          $razno, $tel, $fax);                          $razno, $tel, $fax);
297                  unless (defined($tmp)) {                  unless (defined($tmp)) {
298                          print &Log("[$table-execute] ".$pgdbh->errstr);                          print &Log("[$table-execute] ".$pgdbh->errstr);
# Line 227  sub tblVodeca { Line 300  sub tblVodeca {
300                  }                  }
301                  $tmp = 0 if ($tmp < 0);                  $tmp = 0 if ($tmp < 0);
302                  $count += $tmp;                  $count += $tmp;
303                  if (++$refresh >= 20) {                  if (++$refresh >= $refresh_timeout) {
304                          $refresh = 0;                          $refresh = 0;
305                          print Progress($count, scalar(@$data));                          print Progress($count, scalar(@$data));
306                  }                  }
307          }          }
308          $sth->finish();          $sth->finish();
309          # ...          return $count;
310          return 0;  }
311    
312    sub tblVodeca {
313            my ($table, $fields, $data) = @_;
314            my $count = 0;
315            my $refresh = 0;
316            foreach my $row (@$data) {
317                    my ($sifra, $naziv) = @$row;
318                    $sifra =~ s/^(..)//;
319                    my $code = $1;
320                    $sifra = &ConvertString($sifra);
321                    $naziv = &ConvertString($naziv);
322                    my $tmp = 0;
323                    if ($code eq "06") {
324                            $tmp += CondInsert("nacin_izdavanja", "sifra", $sifra,
325                                    "(sifra, opis)", ($sifra, $naziv));
326                    } elsif ($code eq "07") {
327                            $tmp += CondInsert("list_fond", "sifra", $sifra,
328                                    "(sifra, opis)", ($sifra, $naziv));
329                    } elsif ($code eq "08") {
330                            $tmp += CondInsert("trudnoca", "sifra", $sifra,
331                                    "(sifra, opis)", ($sifra, $naziv));
332                    } elsif ($code eq "09") {
333                            $tmp += CondInsert("dojencad", "sifra", $sifra,
334                                    "(sifra, opis)", ($sifra, $naziv));
335                    } elsif ($code eq "10") {
336                            $tmp += CondInsert("vozac", "sifra", $sifra,
337                                    "(sifra, opis)", ($sifra, $naziv));
338                    } elsif ($code eq "11") {
339                            $tmp += CondInsert("droga", "sifra", $sifra,
340                                    "(sifra, opis)", ($sifra, $naziv));
341                    } else {
342                            # UNKNOWN CODE!!!
343                            print &Log("[WARNING: unknown code \"$code\"]");
344                    }
345                    $tmp = 0 if ($tmp < 0);
346                    $count += $tmp;
347                    if (++$refresh >= $refresh_timeout) {
348                            $refresh = 0;
349                            print Progress($count, scalar(@$data));
350                    }
351            }
352            return $count;
353  }  }
354    
355  my (%dbf) = (  my (%dbf) = (
# Line 294  foreach my $table (@tables) { Line 409  foreach my $table (@tables) {
409  close(LOG);  close(LOG);
410  $xbdbh->disconnect();  $xbdbh->disconnect();
411  $pgdbh->disconnect();  $pgdbh->disconnect();
412  print "Log left in file \"$log\"\n";  print "Log left in file \"$log\".\n";
413  exit $?;  exit $?;

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.26