comparison Lib/IMPL/DOM/Navigator/Builder.pm @ 13:bb8d67f811ea

merge heads
author Sergey
date Wed, 02 Sep 2009 23:11:14 +0400
parents 955b2324c1bf 75980091813b
children 65a7bb156fb7
comparison
equal deleted inserted replaced
12:955b2324c1bf 13:bb8d67f811ea
1 package IMPL::DOM::Navigator::Builder; 1 package IMPL::DOM::Navigator::Builder;
2 use strict; 2 use strict;
3 use warnings; 3 use warnings;
4 4
5 use base qw(IMPL::DOM::Navigator); 5 use base qw(IMPL::DOM::Navigator);
6
7 use IMPL::Class::Property; 6 use IMPL::Class::Property;
7 use IMPL::Class::Property::Direct;
8 8
9 BEGIN { 9 BEGIN {
10 public property SchemaNavigator => prop_get | owner_set; 10 protected _direct property _navigatorSchema => prop_all;
11 public _direct property Document => prop_get | owner_set;
12 }
13
14 __PACKAGE__->PassThroughArgs;
15
16 sub CTOR {
17 my ($this,$domDocument,$schema) = @_;
18
19 $this->{$Document} = $domDocument;
20 $this->{$_navigatorSchema} = new IMPL::DOM::Navigator($schema);
21 }
22
23 sub NavigateCreate {
24 my ($this,$nodeName,%props) = @_;
25
26 if ( my $nodeSchema = $this->{$_navigatorSchema}->Navigate($nodeName) ) {
27
28
29 } else {
30 die new IMPL::InvalidOperationException("Requested elemnt not found in the schema");
31 }
11 } 32 }
12 33
13 1; 34 1;
14
15 =pod
16
17 =head1 SYNOPSIS
18
19 my $nav = new IMPL::DOM::Navigator::Builder(Schema => $mySchema);
20
21 # set position to root
22 $nav->InitRoot();
23
24 # go to node 'Person' and create one if not exists
25 $nav->NavigateAuto("Person");
26
27 # set some node properties
28 $nav->nodeCurrent->Name("Smith");
29 $nav->nodeCurrent->Age("20");
30
31 # navigate to node 'Address' and create one if not exists
32 $nav->NavigateAuto("Address");
33
34 =head1 DESCRIPTION
35
36 Навигатор, который позволяет формировать документ в соответствии со схемой
37
38 =cut