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) {