[interchange-cvs] interchange - racke modified lib/Vend/Table/Shadow.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Fri Sep 27 16:01:01 2002


User:      racke
Date:      2002-09-27 20:00:34 GMT
Modified:  lib/Vend/Table Shadow.pm
Log:
introduced subroutines for the column mapping

Revision  Changes    Path
1.11      +36 -22    interchange/lib/Vend/Table/Shadow.pm


rev 1.11, prev_rev 1.10
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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Shadow.pm	26 Sep 2002 13:13:16 -0000	1.10
+++ Shadow.pm	27 Sep 2002 20:00:34 -0000	1.11
@@ -1,6 +1,6 @@
 # Vend::Table::Shadow - Access a virtual "Shadow" table
 #
-# $Id: Shadow.pm,v 1.10 2002/09/26 13:13:16 racke Exp $
+# $Id: Shadow.pm,v 1.11 2002/09/27 20:00:34 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.10 $, 10);
+$VERSION =3D substr(q$Revision: 1.11 $, 10);
=20
 # TODO
 #
@@ -180,28 +180,9 @@
 	my ($ref, $map, $column, $locale, $db, $value);
=20=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}) {
-				$map =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
-				if (exists $map->{table}) {
-					$db =3D Vend::Data::database_exists_ref($map->{table})
-						or die "unknown table $map->{table} in mapping for column $column of=
 $s->[$TABLE] for locale $locale";
-					if ($db->record_exists($key)) {
-					    $value =3D $db->field($key, $map->{column});
-					} else {
-						$value =3D '';
-					}
-				} else {
-					$value =3D $s->field($key, $map->{column});
-				}
-				$ref->{$cols[$i]} =3D $value;
-			}
-		}
+		$s->_map_hash($key, $ref);
 	}
 	return $ref;
 }
@@ -251,6 +232,39 @@
 	my ($s, $key) =3D @_;
 	$s =3D $s->import_db() unless defined $s->[$OBJ];
 	$s->[$OBJ]->reset();
+}
+
+sub _map_hash {
+	my ($s, $key, $href) =3D @_;
+
+    for (keys %$href) {
+		$href->{$_} =3D $s->_map_column($key, $_);
+	}
+
+	$href;
+}
+
+sub _map_column {
+	my ($s, $key, $column) =3D @_;
+	my ($map, $db, $value);
+
+	my $locale =3D $::Scratch->{mv_locale} || 'default';
+
+	if (exists $s->[$CONFIG]->{MAP}->{$column}->{$locale}) {
+		$map =3D $s->[$CONFIG]->{MAP}->{$column}->{$locale};
+		if (exists $map->{table}) {
+			$db =3D Vend::Data::database_exists_ref($map->{table})
+					   or die "unknown table $map->{table} in mapping for column $column =
of $s->[$TABLE] for locale $locale";
+			if ($db->record_exists($key)) {
+			    $value =3D $db->field($key, $map->{column});
+			} else {
+				$value =3D '';
+			}
+		} else {
+			$value =3D $s->field($key, $map->{column});
+		}
+		$value;
+	}
 }
=20
 1;