Mercurial > pub > Impl
comparison Lib/IMPL/ORM/Entity.pm @ 28:6d33f75c6e1f
ORM in works
author | Sergey |
---|---|
date | Mon, 19 Oct 2009 04:13:54 +0400 |
parents | b544a772b654 |
children | 16ada169ca75 |
comparison
equal
deleted
inserted
replaced
27:b544a772b654 | 28:6d33f75c6e1f |
---|---|
14 } | 14 } |
15 | 15 |
16 sub CTOR { | 16 sub CTOR { |
17 my ($this,$class,$schema) = @_; | 17 my ($this,$class,$schema) = @_; |
18 | 18 |
19 | 19 $this->{$Class} = $class; |
20 (my $name = $class) =~ s/::/_/g; | |
21 $this->{$Name} = $name; | |
22 $this->Schema = $schema; | |
23 $this->{$Values} = { | |
24 map {$_->{name},{type => $_->{type}, virtual => $_->{virtual}}} @$schema | |
25 }; | |
20 } | 26 } |
21 | 27 |
22 sub Store; | 28 sub Store; |
23 *Store = \&dbgStore; | 29 *Store = \&dbgStore; |
24 | 30 |
25 sub dbgStore { | 31 sub dbgStore { |
26 my ($this,$prop,$value) = @_; | 32 my ($this,$prop,$value) = @_; |
27 | 33 |
28 if ( my $container = $this->{$Values}{$prop} ) { | 34 if ( my $container = $this->{$Values}{$prop} ) { |
29 if ($container->{type} eq 'SCALAR') { | 35 $container->{oldValue} = $container->{value}; |
30 | 36 $container->{value} = $value; |
31 } else { | |
32 | |
33 } | |
34 | |
35 } else { | 37 } else { |
36 die new IMPL::InvalidOperationException("Property not found",$this->Name,$prop); | 38 die new IMPL::InvalidOperationException("Property not found",$this->Name,$prop); |
37 } | 39 } |
38 } | 40 } |
39 | 41 |
40 sub Get { | 42 sub Get { |
43 my ($this,$prop) = @_; | |
41 | 44 |
45 return $this->{$Values}{$prop}{value}; | |
42 } | 46 } |
43 | 47 |
44 1; | 48 1; |