diff Lib/IMPL/ORM.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 2d1c3f713280
line wrap: on
line diff
--- a/Lib/IMPL/ORM.pm	Fri Feb 26 01:43:42 2010 +0300
+++ b/Lib/IMPL/ORM.pm	Fri Feb 26 10:49:21 2010 +0300
@@ -1,123 +1,123 @@
-package IMPL::ORM;
-use strict;
-use warnings;
-
-use base qw(IMPL::Object);
-use IMPL::Class::Property;
-use Scalar::Util qw(weaken refaddr);
-
-use IMPL::Exception;
-
-our $Depth = 1; # загружать объект + 1 уровень детей
-our $UseProxy = 1;
-
-BEGIN {
-    private property _ObjectCache => prop_all;
-    private property _MapInstances => prop_all;
-    private property _WorkUnit => prop_all;
-    public property Schema => prop_all;
-}
-
-sub ObjectInfoById {
-    my ($this,$oid) = @_;
-    
-    return $this->_ObjectCache->{$oid};
-}
-
-sub ObjectInfo {
-    my ($this,$inst) = @_;
-    
-    die new IMPL::InvalidOperationException("This method can be used only for a reference") unless ref $inst;
-    
-    return $this->_MapInstances->{refaddr $inst};
-}
-
-
-1;
-__END__
-=pod
-=head1 SYNOPSIS
-
-use IMPL::ORM::Sql;
-
-my $DB = new IMPL::ORM::Sql("connection string");
-
-local $IMPL::ORM::Depth = 1; # load childs only, no more
-
-my $artist = $DB->Lookup( Artist => { name => 'Beatles' } );
-
-my $order = new Order();
-$order->AddItem($_) foreach $artist->Albums->List;
-
-$DB->Save($order);
-
-my $label = $artist->Albums->Index(0)->Label;
-
-$DB->Populate($label); #load $label
-
-=head1 DESCRIPTION
-=head2 MEMBERS
-=level 4
-=back
-=head2 Variables
-=head2 INTERNALS
-=head3 Object Representation
-
-Каждый класс отображаемый в источник данных представляется в виде набора
-сущностей, каждая из которых представляет состояние базового класса.
-
-Foo         entityFoo
-    Bar         entityBar
-    Baz         entityBaz
-
-При сохранении виртуальных свойств классов в соответствующих сущностях заводится
-два поля - одно под сохранение собственного значения свойства, другое - для
-хренеия виртуального значения.
-
-Foo
-    public virtual property Name => prop_all, {Type => String};
-    
-entityFoo
-    string m_Name - собственное значение
-    string v_Name - вртуальное значение
-    
-Каждый сохраненный объект в базе имеет собственный идентификатор.
-Новые объекты идентификатора не имеют, до тех пор пока они не будут сохранены.
-
-=head3 Object Cache
-
-Для учета объектов, которые присутствуют в источнике данных используется кеш
-объектов. Сюда попадают полученные из базы объекты, а также вновь добавленные
-объекты.
-
-ObjectInfo => {
-    instance => weak ref
-    _id => data source dependent id
-    state => {persistent|null|new|deleted}
-    work_unit => ref to the work unit where object is acting
-}
-
-данная структура доступна через две функции ObjectInfoById и ObjectInfo
-
-=head3 Type mapping
-
-Источник данных имеет в себе схему данных, которая определяет набор типов,
-хранимых в данном источнике. Есть несколько видов отображения типов:
-
-=level 4
-
-=item 1
-
-Отображение классов, когда класс рассмаривается в иде набора свойств
-
-=item
-
-Отображение классов в одно значение (напрмер строку, данные и т.п.)
-
-=item
-
-Классы, которые на прямую работают с источником данных, такие как коллекции.
-
-=back
-
-=cut
\ No newline at end of file
+package IMPL::ORM;
+use strict;
+use warnings;
+
+use base qw(IMPL::Object);
+use IMPL::Class::Property;
+use Scalar::Util qw(weaken refaddr);
+
+use IMPL::Exception;
+
+our $Depth = 1; # загружать объект + 1 уровень детей
+our $UseProxy = 1;
+
+BEGIN {
+    private property _ObjectCache => prop_all;
+    private property _MapInstances => prop_all;
+    private property _WorkUnit => prop_all;
+    public property Schema => prop_all;
+}
+
+sub ObjectInfoById {
+    my ($this,$oid) = @_;
+    
+    return $this->_ObjectCache->{$oid};
+}
+
+sub ObjectInfo {
+    my ($this,$inst) = @_;
+    
+    die new IMPL::InvalidOperationException("This method can be used only for a reference") unless ref $inst;
+    
+    return $this->_MapInstances->{refaddr $inst};
+}
+
+
+1;
+__END__
+=pod
+=head1 SYNOPSIS
+
+use IMPL::ORM::Sql;
+
+my $DB = new IMPL::ORM::Sql("connection string");
+
+local $IMPL::ORM::Depth = 1; # load childs only, no more
+
+my $artist = $DB->Lookup( Artist => { name => 'Beatles' } );
+
+my $order = new Order();
+$order->AddItem($_) foreach $artist->Albums->List;
+
+$DB->Save($order);
+
+my $label = $artist->Albums->Index(0)->Label;
+
+$DB->Populate($label); #load $label
+
+=head1 DESCRIPTION
+=head2 MEMBERS
+=level 4
+=back
+=head2 Variables
+=head2 INTERNALS
+=head3 Object Representation
+
+Каждый класс отображаемый в источник данных представляется в виде набора
+сущностей, каждая из которых представляет состояние базового класса.
+
+Foo         entityFoo
+    Bar         entityBar
+    Baz         entityBaz
+
+При сохранении виртуальных свойств классов в соответствующих сущностях заводится
+два поля - одно под сохранение собственного значения свойства, другое - для
+хренеия виртуального значения.
+
+Foo
+    public virtual property Name => prop_all, {Type => String};
+    
+entityFoo
+    string m_Name - собственное значение
+    string v_Name - вртуальное значение
+    
+Каждый сохраненный объект в базе имеет собственный идентификатор.
+Новые объекты идентификатора не имеют, до тех пор пока они не будут сохранены.
+
+=head3 Object Cache
+
+Для учета объектов, которые присутствуют в источнике данных используется кеш
+объектов. Сюда попадают полученные из базы объекты, а также вновь добавленные
+объекты.
+
+ObjectInfo => {
+    instance => weak ref
+    _id => data source dependent id
+    state => {persistent|null|new|deleted}
+    work_unit => ref to the work unit where object is acting
+}
+
+данная структура доступна через две функции ObjectInfoById и ObjectInfo
+
+=head3 Type mapping
+
+Источник данных имеет в себе схему данных, которая определяет набор типов,
+хранимых в данном источнике. Есть несколько видов отображения типов:
+
+=level 4
+
+=item 1
+
+Отображение классов, когда класс рассмаривается в иде набора свойств
+
+=item
+
+Отображение классов в одно значение (напрмер строку, данные и т.п.)
+
+=item
+
+Классы, которые на прямую работают с источником данных, такие как коллекции.
+
+=back
+
+=cut