Mercurial > pub > Impl
comparison Lib/IMPL/SQL/Schema/Table.pm @ 270:3f59fd828d5f
merge
author | cin |
---|---|
date | Fri, 25 Jan 2013 00:25:02 +0400 |
parents | dacfe7c0311a |
children | 56364d0c4b4f |
comparison
equal
deleted
inserted
replaced
268:4abda21186cd | 270:3f59fd828d5f |
---|---|
113 if $index < 0 || $index >= ($this->{$columns} ? scalar(@{$this->{$columns}}) : 0); | 113 if $index < 0 || $index >= ($this->{$columns} ? scalar(@{$this->{$columns}}) : 0); |
114 | 114 |
115 return $this->{$columns}[$index]; | 115 return $this->{$columns}[$index]; |
116 } | 116 } |
117 | 117 |
118 sub SetColumnPosition { | |
119 my ($this,$nameOrColumn,$pos) = @_; | |
120 | |
121 my $colName; | |
122 if (is($nameOrColumn,'IMPL::SQL::Schema::Column')) { | |
123 $colName = $nameOrColumn->name; | |
124 } elsif (not ref $nameOrColumn) { | |
125 $colName = $nameOrColumn; | |
126 } else { | |
127 die IMPL::InvalidArgumentException->new(column => 'The specified column isn\'t found in the table'); | |
128 } | |
129 | |
130 die IMPL::InvalidArgumentException->new( 'pos' => 'The specified position is invalid') | |
131 if not defined $pos || $pos < 0 || $pos >= $this->columnsCount; | |
132 | |
133 my $index = 0; | |
134 foreach my $column(@{$this->{$columns}}) { | |
135 last if $column->name eq $colName; | |
136 $index++; | |
137 } | |
138 | |
139 if ($pos != $index) { | |
140 #position needs to be changed; | |
141 | |
142 my ($column) = splice @{$this->{$columns}}, $index, 1; | |
143 splice @{$this->{$columns}}, $pos, 0, $column; | |
144 } | |
145 | |
146 return; | |
147 } | |
148 | |
149 sub columnsCount { | |
150 my ($this) = @_; | |
151 | |
152 return scalar(@{$this->{$columns}}); | |
153 } | |
154 | |
118 sub ColumnsCount { | 155 sub ColumnsCount { |
119 my ($this) = @_; | 156 goto &columnsCount; |
120 | |
121 return scalar(@{$this->{$columns}}); | |
122 } | 157 } |
123 | 158 |
124 sub AddConstraint { | 159 sub AddConstraint { |
125 my $this = shift; | 160 my $this = shift; |
126 if (@_ == 1) { | 161 if (@_ == 1) { |