Mercurial > pub > Impl
comparison Lib/IMPL/Web/View/Metadata/BaseMeta.pm @ 366:935629bf80df
model metadata, in progress
author | cin |
---|---|
date | Mon, 02 Dec 2013 17:44:38 +0400 |
parents | 82b6c967bcf1 |
children | 608e74bc309f |
comparison
equal
deleted
inserted
replaced
365:7c621bb95e53 | 366:935629bf80df |
---|---|
12 'IMPL::Object' => undef | 12 'IMPL::Object' => undef |
13 ], | 13 ], |
14 props => [ | 14 props => [ |
15 model => PROP_RO, | 15 model => PROP_RO, |
16 modelType => PROP_RO, | 16 modelType => PROP_RO, |
17 holdingType => PROP_RO, | |
17 provider => PROP_RO, | 18 provider => PROP_RO, |
18 name => PROP_RO, | 19 name => PROP_RO, |
19 label => PROP_RO, | 20 label => PROP_RO, |
20 container => PROP_RO, | 21 container => PROP_RO, |
21 template => PROP_RO, | 22 template => PROP_RO, |
37 $this->modelType($type); | 38 $this->modelType($type); |
38 $this->childMap({}); | 39 $this->childMap({}); |
39 | 40 |
40 #mixin other args | 41 #mixin other args |
41 if ($args) { | 42 if ($args) { |
42 $this->$_($args->{$_}) foreach grep $args->{$_}, qw(name label container template); | 43 $this->$_($args->{$_}) foreach grep $args->{$_}, qw(name label container template holdingType); |
43 } | 44 } |
44 } | 45 } |
45 | 46 |
46 sub GetChild { | 47 sub GetProperty { |
47 my ($this,$name) = @_; | 48 my ($this,$name) = @_; |
48 | 49 |
49 if(my $child = $this->_childMap->{$name}) { | 50 $this->_PopulateProperties() |
50 return $child; | 51 unless $this->_childNames; |
51 } else { | 52 |
52 return $this->_childMap->{$name} = $this->provider->GetChild($this,$name); | 53 return $this->_childMap->{$name}; |
53 } | |
54 } | 54 } |
55 | 55 |
56 sub GetChildren { | 56 sub GetProperties { |
57 my ($this) = @_; | 57 my ($this) = @_; |
58 | 58 |
59 if ($this->_childNames) { | 59 if ($this->_childNames) { |
60 return [ map $this->_childMap->{$_}, @{$this->_childNames} ]; | 60 return [ map $this->_childMap->{$_}, @{$this->_childNames} ]; |
61 } else { | 61 } else { |
62 my @childNames; | 62 return $this->_PopulateProperties; |
63 my %childMap; | 63 } |
64 my @result; | 64 } |
65 | |
66 sub _PopulateProperties { | |
67 my ($this) = @_; | |
65 | 68 |
66 foreach my $child (@{$this->provider->PopulateChildren($this)}) { | 69 my @childNames; |
67 $childMap{$child->name} = $child; | 70 my %childMap; |
68 push @childNames, $child->name; | 71 my @result; |
69 push @result, $child; | 72 |
70 } | 73 foreach my $child (@{$this->provider->PopulateProperties($this)}) { |
71 | 74 $childMap{$child->name} = $child; |
72 $this->_childMap(\%childMap); | 75 push @childNames, $child->name; |
73 $this->_childNames(\@childNames); | 76 push @result, $child; |
74 return \@result; | 77 } |
75 } | 78 |
79 $this->_childMap(\%childMap); | |
80 $this->_childNames(\@childNames); | |
81 return \@result; | |
82 } | |
83 | |
84 sub GetItems { | |
85 my ($this) = @_; | |
86 | |
87 return $this->provider->GetItems($this); | |
88 } | |
89 | |
90 sub GetItem { | |
91 my ($this,$index) = @_; | |
92 | |
93 return $this->provider->GetItem($this,$index); | |
76 } | 94 } |
77 | 95 |
78 1; | 96 1; |
79 | 97 |
80 __END__ | 98 __END__ |