Mercurial > pub > Impl
view Lib/IMPL/ORM/Entity.pm @ 50:521c9c1a3ea1
:q
author | wizard@linux-odin.local |
---|---|
date | Sat, 27 Feb 2010 16:28:45 +0300 |
parents | 16ada169ca75 |
children | 4267a2ac3d46 |
line wrap: on
line source
package IMPL::ORM::Entity; use strict; use warnings; use base qw(IMPL::Object); use IMPL::Class::Property; use IMPL::Class::Property::Direct; BEGIN { public _direct property Name => prop_get; public _direct property Class => prop_get; public _direct property Values => prop_get; public _direct property Schema => prop_get; } sub CTOR { my ($this,$class,$schema) = @_; $this->{$Class} = $class; (my $name = $class) =~ s/::/_/g; $this->{$Name} = $name; $this->Schema = $schema; $this->{$Values} = { map {$_->{name},{type => $_->{type}, virtual => $_->{virtual}}} @$schema }; } sub Store; *Store = \&dbgStore; sub dbgStore { my ($this,$prop,$value) = @_; if ( my $container = $this->{$Values}{$prop} ) { $container->{oldValue} = $container->{value}; $container->{value} = $value; } else { die new IMPL::InvalidOperationException("Property not found",$this->Name,$prop); } } sub Get { my ($this,$prop) = @_; return $this->{$Values}{$prop}{value}; } 1;