diff Lib/CDBI/Map.pm @ 49:16ada169ca75

migrating to the Eclipse IDE
author wizard@linux-odin.local
date Fri, 26 Feb 2010 10:49:21 +0300
parents 03e58a454b20
children 76515373dac0
line wrap: on
line diff
--- a/Lib/CDBI/Map.pm	Fri Feb 26 01:43:42 2010 +0300
+++ b/Lib/CDBI/Map.pm	Fri Feb 26 10:49:21 2010 +0300
@@ -1,110 +1,110 @@
-package CDBI::Map;
-use strict;
-use Common;
-
-BEGIN {
-    DeclareProperty _Cache => ACCESS_NONE;
-    DeclareProperty _HoldingType => ACCESS_NONE;
-}
-
-sub _KeyValuePairClass {
-    my $this = shift;
-    ($this->{$_HoldingType} = ref $this ) =~ s/^((?:\w+::)*)Map(\w+)$/${1}MapItem${2}/ unless $this->{$_HoldingType};
-    return $this->{$_HoldingType};
-}
-
-# при загрузке кеша нельзя грузить KeyValuePair поскольку получатся циклические ссылки:(
-sub GetCache {
-    my $this = shift;
-
-    if (not $this->{$_Cache}) {
-        $this->{$_Cache} = { map { $_->ItemKey, { id => $_->id, value => $_->Value} } $this->_KeyValuePairClass->search(Parent => $this) };
-    }
-
-    return $this->{$_Cache};
-}
-
-sub Keys {
-    my $this = shift;
-    return wantarray ? keys %{$this->GetCache} : [keys %{$this->GetCache}];
-}
-
-sub Item {
-    my ($this,$key,$value,%options) = @_;
-
-    die new Exception('A key must be specified') unless defined $key;
-
-    if (@_ > 2) {
-        # set
-        if (my $pairInfo = $this->GetCache->{$key}) {
-            # update
-            my $pair = $this->_KeyValuePairClass->retrieve($pairInfo->{id});
-            if (defined $value or $options{'keepnull'}) {
-                $pair->Value($value);
-                $pair->update;
-                $pairInfo->{value} = $value;
-            } else {
-                #delete
-                $pair->delete;
-                delete $this->GetCache->{$key};
-            }
-        } else {
-            if ( defined $value or $options{'keepnull'}) {
-                my $pair = $this->_KeyValuePairClass->insert( {Parent => $this, ItemKey => $key, Value => $value } );
-                $this->GetCache->{$key} = {id => $pair->id, value => $value };
-            }
-        }
-        return $value;
-    } else {
-        # get
-        if (my $pairInfo = $this->GetCache->{$key}) {
-            return $pairInfo->{value};
-        } else {
-            return undef;
-        }
-    }
-}
-
-sub Delete {
-    my ($this,$key) = @_;
-
-    if (my $pair = $this->GetCache->{$key} ) {
-        $pair->delete;
-        delete $this->GetCache->{$key};
-        return 1;
-    }
-    return 0;
-}
-
-sub Has {
-    my ($this,$key) = @_;
-
-    return exists $this->GetCache->{$key};
-}
-
-1;
-__END__
-=pod
-=head1 SYNOPSIS
-package App::CDBI;
-use base 'Class::DBI';
-
-#....
-
-package App::MapString;
-use base 'Class::DBI','CDBI::Map';
-
-#....
-
-
-my $Map = App::MapString->retrieve($id);
-print $Map->Item('key');
-$Map->Item('key','value');
-$Map->Delete('key');
-print "the $key is found" if $Map->Has($key);
-
-=head1 DESCRIPTION
-
-Provides a set of methods to manipulate with Maps;
-
-=cut
\ No newline at end of file
+package CDBI::Map;
+use strict;
+use Common;
+
+BEGIN {
+    DeclareProperty _Cache => ACCESS_NONE;
+    DeclareProperty _HoldingType => ACCESS_NONE;
+}
+
+sub _KeyValuePairClass {
+    my $this = shift;
+    ($this->{$_HoldingType} = ref $this ) =~ s/^((?:\w+::)*)Map(\w+)$/${1}MapItem${2}/ unless $this->{$_HoldingType};
+    return $this->{$_HoldingType};
+}
+
+# при загрузке кеша нельзя грузить KeyValuePair поскольку получатся циклические ссылки:(
+sub GetCache {
+    my $this = shift;
+
+    if (not $this->{$_Cache}) {
+        $this->{$_Cache} = { map { $_->ItemKey, { id => $_->id, value => $_->Value} } $this->_KeyValuePairClass->search(Parent => $this) };
+    }
+
+    return $this->{$_Cache};
+}
+
+sub Keys {
+    my $this = shift;
+    return wantarray ? keys %{$this->GetCache} : [keys %{$this->GetCache}];
+}
+
+sub Item {
+    my ($this,$key,$value,%options) = @_;
+
+    die new Exception('A key must be specified') unless defined $key;
+
+    if (@_ > 2) {
+        # set
+        if (my $pairInfo = $this->GetCache->{$key}) {
+            # update
+            my $pair = $this->_KeyValuePairClass->retrieve($pairInfo->{id});
+            if (defined $value or $options{'keepnull'}) {
+                $pair->Value($value);
+                $pair->update;
+                $pairInfo->{value} = $value;
+            } else {
+                #delete
+                $pair->delete;
+                delete $this->GetCache->{$key};
+            }
+        } else {
+            if ( defined $value or $options{'keepnull'}) {
+                my $pair = $this->_KeyValuePairClass->insert( {Parent => $this, ItemKey => $key, Value => $value } );
+                $this->GetCache->{$key} = {id => $pair->id, value => $value };
+            }
+        }
+        return $value;
+    } else {
+        # get
+        if (my $pairInfo = $this->GetCache->{$key}) {
+            return $pairInfo->{value};
+        } else {
+            return undef;
+        }
+    }
+}
+
+sub Delete {
+    my ($this,$key) = @_;
+
+    if (my $pair = $this->GetCache->{$key} ) {
+        $pair->delete;
+        delete $this->GetCache->{$key};
+        return 1;
+    }
+    return 0;
+}
+
+sub Has {
+    my ($this,$key) = @_;
+
+    return exists $this->GetCache->{$key};
+}
+
+1;
+__END__
+=pod
+=head1 SYNOPSIS
+package App::CDBI;
+use base 'Class::DBI';
+
+#....
+
+package App::MapString;
+use base 'Class::DBI','CDBI::Map';
+
+#....
+
+
+my $Map = App::MapString->retrieve($id);
+print $Map->Item('key');
+$Map->Item('key','value');
+$Map->Delete('key');
+print "the $key is found" if $Map->Has($key);
+
+=head1 DESCRIPTION
+
+Provides a set of methods to manipulate with Maps;
+
+=cut