[interchange-cvs] interchange - racke modified lib/Vend/Table/Shadow.pm
interchange-core@icdevgroup.org
interchange-core@icdevgroup.org
Sat Jul 13 08:45:01 2002
User: racke
Date: 2002-07-13 12:44:38 GMT
Modified: lib/Vend/Table Shadow.pm
Log:
bunch of new functions added, but not usable for now
Revision Changes Path
1.5 +112 -7 interchange/lib/Vend/Table/Shadow.pm
rev 1.5, prev_rev 1.4
Index: Shadow.pm
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /anon_cvs/repository/interchange/lib/Vend/Table/Shadow.pm,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Shadow.pm 9 Jul 2002 17:42:12 -0000 1.4
+++ Shadow.pm 13 Jul 2002 12:44:36 -0000 1.5
@@ -1,6 +1,6 @@
# Vend::Table::Shadow - Access a virtual "Shadow" table
#
-# $Id: Shadow.pm,v 1.4 2002/07/09 17:42:12 mheins Exp $
+# $Id: Shadow.pm,v 1.5 2002/07/13 12:44:36 racke Exp $
#
# Copyright (C) 2002 Stefan Hornburg (Racke) <racke@linuxia.de>
#
@@ -20,7 +20,7 @@
# MA 02111-1307 USA.
=20
package Vend::Table::Shadow;
-$VERSION =3D substr(q$Revision: 1.4 $, 10);
+$VERSION =3D substr(q$Revision: 1.5 $, 10);
=20
# TODO
#
@@ -29,8 +29,8 @@
=20
use strict;
=20
-use vars qw($CONFIG $TABLE $KEY $NAME $TYPE $OBJ);
-($CONFIG, $TABLE, $KEY, $NAME, $TYPE, $OBJ) =3D (0 .. 5);
+use vars qw($CONFIG $TABLE $KEY $NAME $TYPE $OBJ $PENDING);
+($CONFIG, $TABLE, $KEY, $NAME, $TYPE, $OBJ, $PENDING) =3D (0 .. 6);
=20
sub config {
my ($s, $key, $value) =3D @_;
@@ -40,8 +40,17 @@
}
=20
sub import_db {
- my($s) =3D @_;
- my $db =3D Vend::Data::import_database($s->[0], 1);
+ my ($s) =3D @_;
+ my ($db);
+
+ if ($s->[$PENDING]) {
+ die "Recursive call to Vend:Table::Shadow::import_db detected (database =
$s->[0]->{name})\n";
+ }
+=09
+ $s->[$PENDING] =3D 1;
+ $db =3D Vend::Data::import_database($s->[0], 1);
+ $s->[$PENDING] =3D 0;
+
return undef if ! $db;
$Vend::Database{$s->[0]{name}} =3D $db;
Vend::Data::update_productbase($s->[0]{name});
@@ -69,7 +78,7 @@
sub open_table {
my ($class, $config, $tablename) =3D @_;
my $obj;
-=09
+#::logDebug ("CLASS: $class CONFIG: " . ::Vend::Util::uneval($config));=09
no strict 'refs';
$obj =3D &{"Vend::Table::$config->{OrigClass}::open_table"}("Vend::Table:=
:$config->{OrigClass}",$config,$tablename);
my $s =3D [$config, $tablename, undef, undef, undef, $obj];
@@ -80,6 +89,7 @@
=20
sub close_table {
my $s =3D shift;
+ return 1 unless defined $s->[$OBJ];
$s->[$OBJ]->close_table();
}
=20
@@ -89,6 +99,97 @@
return $s->[$OBJ]->columns();
}
=20
+sub test_column {
+ my ($s, $column) =3D @_;
+ $s =3D $s->import_db() unless defined $s->[$OBJ];
+ return $s->[$OBJ]->test_column($column);
+}
+
+sub numeric {
+ my ($s, $column) =3D @_;
+ my ($map, $locale);
+
+ $s =3D $s->import_db() if ! defined $s->[$OBJ];
+ $locale =3D $::Scratch->{mv_locale} || 'default';
+ if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
+ $column =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+ }
+=09
+ return $s->numeric($column);
+}
+
+sub column_index {
+ my ($s, $column) =3D @_;
+ $s =3D $s->import_db() unless defined $s->[$OBJ];
+ return $s->[$OBJ]->column_index($column);
+}
+
+sub column_exists {
+ my ($s, $column) =3D @_;
+ my ($locale);
+=09
+ $s =3D $s->import_db() if ! defined $s->[$OBJ];
+ $locale =3D $::Scratch->{mv_locale} || 'default';
+ if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
+ $column =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+ }
+=09
+ return defined($s->[$CONFIG]{COLUMN_INDEX}{lc $column});
+}
+
+sub set_row {
+ my ($s, @fields) =3D @_;
+
+ if ($s->[$PENDING]) {
+ no strict 'refs';
+ return &{"Vend::Table::$s->[0]->{OrigClass}::set_row"}($s, @fields);
+ }
+=09=09
+ $s =3D $s->import_db() if ! defined $s->[$OBJ];
+ $s->[$OBJ]->set_row(@fields);
+}
+
+sub row {
+ my ($s, $key) =3D @_;
+ my ($column, $locale);
+=09
+ $s =3D $s->import_db() if ! defined $s->[$OBJ];
+ $locale =3D $::Scratch->{mv_locale} || 'default';
+=09
+ my @row =3D $s->[$OBJ]->row($key);
+ if (@row) {
+ my @cols =3D $s->columns();
+ for (my $i =3D 0; $i < @cols; $i++) {
+ $column =3D $cols[$i];
+ if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
+ $column =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+ $row[$i] =3D $s->field($key, $column);
+ }
+ }
+ }
+ return @row;
+}
+
+sub row_hash {
+ my ($s, $key) =3D @_;
+ my ($ref, $column, $locale);
+=09
+ $s =3D $s->import_db() unless defined $s->[$OBJ];
+ $locale =3D $::Scratch->{mv_locale} || 'default';
+ $ref =3D $s->[$OBJ]->row_hash($key);
+ if ($ref) {
+ my @cols =3D $s->columns();
+ for (my $i =3D 0; $i < @cols; $i++) {
+ $column =3D $cols[$i];
+ if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
+ $column =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+ $ref->{$cols[$i]} =3D $s->field($key, $column);
+ }
+ }
+ }
+ return $ref;
+}
+
sub field {
my ($s, $key, $column) =3D @_;
my ($map, $locale);
@@ -104,6 +205,10 @@
sub ref {
return $_[0] if defined $_[0]->[$OBJ];
return $_[0]->import_db();
+}
+
+sub test_record {
+ 1;
}
=20
sub record_exists {