0
+ − 1 package Schema::DB::Column;
+ − 2 use Common;
+ − 3 our @ISA = qw(Object);
+ − 4
+ − 5 BEGIN {
+ − 6 DeclareProperty Name => ACCESS_READ;
+ − 7 DeclareProperty Type => ACCESS_READ;
+ − 8 DeclareProperty CanBeNull => ACCESS_READ;
+ − 9 DeclareProperty DefaultValue => ACCESS_READ;
+ − 10 DeclareProperty Tag => ACCESS_READ;
+ − 11 }
+ − 12
+ − 13 sub CTOR {
+ − 14 my $this = shift;
+ − 15 $this->SUPER::CTOR(@_);
+ − 16
+ − 17 $this->{$Name} or die new Exception('a column name is required');
+ − 18 $this->{$CanBeNull} = 0 if not exists $this->{$CanBeNull};
+ − 19 UNIVERSAL::isa($this->{$Type},'Schema::DB::Type') or die new Exception('a type is required for the column',$this->{$Name});
+ − 20 }
+ − 21
+ − 22 sub isEqualsStr {
+ − 23 my ($a,$b) = @_;
+ − 24
+ − 25 if (defined $a and defined $b) {
+ − 26 return $a eq $b;
+ − 27 } else {
+ − 28 if (defined $a or defined $b) {
+ − 29 return 0;
+ − 30 } else {
+ − 31 return 1;
+ − 32 }
+ − 33 }
+ − 34 }
+ − 35
+ − 36 sub isEquals {
+ − 37 my ($a,$b) = @_;
+ − 38
+ − 39 if (defined $a and defined $b) {
+ − 40 return $a == $b;
+ − 41 } else {
+ − 42 if (defined $a or defined $b) {
+ − 43 return 0;
+ − 44 } else {
+ − 45 return 1;
+ − 46 }
+ − 47 }
+ − 48 }
+ − 49
+ − 50 sub isSame {
+ − 51 my ($this,$other) = @_;
+ − 52
+ − 53 return ($this->{$Name} eq $other->{$Name} and $this->{$CanBeNull} == $other->{$CanBeNull} and isEqualsStr($this->{$DefaultValue}, $other->{$DefaultValue}) and $this->{$Type}->isSame($other->{$Type}));
+ − 54 }
+ − 55
+ − 56 1;