annotate Lib/IMPL/DOM/Schema/Node.pm @ 250:129e48bb5afb

DOM refactoring ObjectToDOM methods are virtual QueryToDOM uses inflators Fixed transform for the complex values in the ObjectToDOM QueryToDOM doesn't allow to use complex values (HASHes) as values for nodes (overpost problem)
author sergey
date Wed, 07 Nov 2012 04:17:53 +0400
parents f48a1a9f4fa2
children 4ddb27ff4a0b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
1 package IMPL::DOM::Schema::Node;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
2 use strict;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
3 use warnings;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
4
165
76515373dac0 Added Class::Template,
wizard
parents: 152
diff changeset
5 use parent qw(IMPL::DOM::Node);
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
6 use IMPL::Class::Property;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
7 use IMPL::DOM::Property qw(_dom);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
8 use IMPL::Class::Property::Direct;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
9
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
10 BEGIN {
152
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
11 public _dom _direct property minOccur => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
12 public _dom _direct property maxOccur => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
13 public _dom _direct property type => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
14 public _dom _direct property name => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
15 public _dom _direct property display => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
16 public _dom _direct property display_no => prop_all;
1e7f03414b65 DOM: schema improvements
wizard
parents: 148
diff changeset
17 public _dom _direct property display_blame => prop_all;
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
18 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
19
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
20 our %CTOR = (
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
21 'IMPL::DOM::Node' => sub {
194
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
22 my %args = @_;
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
23 delete @args{qw(
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
24 minOccur
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
25 maxOccur
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
26 type
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
27 name
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
28 display
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
29 display_no
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
30 display_blame
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
31 )} ;
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
32 $args{nodeName} ||= 'Node';
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
33 %args
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
34 }
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
35 );
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
36
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
37 sub CTOR {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
38 my ($this,%args) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
39
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
40 $this->{$minOccur} = defined $args{minOccur} ? $args{minOccur} : 1;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
41 $this->{$maxOccur} = defined $args{maxOccur} ? $args{maxOccur} : 1;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
42 $this->{$type} = $args{type};
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
43 $this->{$name} = $args{name} or die new IMPL::InvalidArgumentException('Argument is required','name');
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
44 $this->{$display} = $args{display} if $args{display};
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
45 $this->{$display_no} = $args{display_no} if $args{display};
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
46 $this->{$display_blame} = $args{display_blame} if $args{display};
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
47 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
48
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
49 sub Validate {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
50 my ($this,$node) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
51
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
52 if (my $schemaType = $this->{$type} ? $this->document->resolveType($this->{$type}) : undef ) {
104
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
53 my @errors = $schemaType->Validate($node,{Source => $this});
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
54 return @errors;
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
55 } else {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
56 return ();
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
57 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
58 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
59
241
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
60 sub isOptional {
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
61 my ($this) = @_;
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
62
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
63 return $this->{$minOccur} ? 0 : 1;
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
64 }
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
65
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
66 sub isMultiple {
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
67 my ($this) = @_;
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
68
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
69 return ($this->{$maxOccur} eq 'unbounded' || $this->{$maxOccur} > 1 ) ? 1 : 0;
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
70 }
f48a1a9f4fa2 +Added ViewResult to allow implementation of the view environment.
sergey
parents: 194
diff changeset
71
104
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
72 sub inflateValue {
194
4d0e1962161c Replaced tabs with spaces
cin
parents: 180
diff changeset
73 $_[1];
104
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
74 }
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
75
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
76 sub inflator { undef }
103
c289ed9662ca Schema beta 2
wizard
parents: 100
diff changeset
77
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
78 sub qname {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
79 $_[0]->nodeName.'[name='.$_[0]->{$name}.']';
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
80 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
81
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
82 1;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
83
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
84 __END__
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
85 =pod
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
86
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
87 =head1 SYNOPSIS
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
88
104
196bf443b5e1 DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents: 103
diff changeset
89 package SchemaEntity;
165
76515373dac0 Added Class::Template,
wizard
parents: 152
diff changeset
90 use parent qw(IMPL::DOM::Schema::Node);
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
91
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
92 sub Validate {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
93 my ($this,$node) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
94 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
95
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
96 =head1 DESCRIPTION
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
97
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
98 Базовый класс для элементов схемы. Также позволяет объявлять узлы определенного типа.
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
99
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
100 =head1 MEMBERS
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
101
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
102 =head2 PROPERTIES
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
103
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
104 =over
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
105
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
106 =item C<[get,set] minOccur>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
107
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
108 C<default: 1>.
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
109
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
110 Минимальное количество повторений узла.
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
111
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
112 =item C<[get,set] maxOccur>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
113
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
114 C<default: 1>.
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
115
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
116 Максимальное количество повторений узла
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
117
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
118 =item C<[get,set] type>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
119
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
120 C<default: undef>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
121
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
122 Имя типа из схемы.
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
123
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
124 =item C<[get,set] name>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
125
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
126 Имя узла.
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
127
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
128 =item C<[get,set] display>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
129
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
130 Имя узла для отображения.
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
131
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
132 =item C<[get,set] display_no>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
133
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
134 Имя узла для отображения (родительный падеж).
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
135
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
136 =item C<[get,set] display_blame>
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
137
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
138 Имя узла для отображения (винительный падеж).
148
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
139
e6447ad85cb4 DOM objects now have a schema and schemaSource properties
wizard
parents: 104
diff changeset
140 =back
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
141
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 37
diff changeset
142 =cut