| 49 | 1 use strict; | 
|  | 2 package IMPL::SQL::Schema::Column; | 
|  | 3 use base qw(IMPL::Object IMPL::Object::Autofill); | 
|  | 4 | 
|  | 5 use IMPL::Class::Property; | 
|  | 6 use IMPL::Class::Property::Direct; | 
|  | 7 | 
|  | 8 BEGIN { | 
|  | 9     public _direct property Name => prop_get; | 
|  | 10     public _direct property Type => prop_get; | 
|  | 11     public _direct property CanBeNull => prop_get; | 
|  | 12     public _direct property DefaultValue => prop_get; | 
|  | 13     public _direct property Tag => prop_get; | 
|  | 14 } | 
|  | 15 | 
|  | 16 __PACKAGE__->PassThroughArgs; | 
|  | 17 | 
|  | 18 sub CTOR { | 
|  | 19     my $this = shift; | 
|  | 20 | 
|  | 21     $this->{$Name} or die new IMPL::InvalidArgumentException('a column name is required'); | 
|  | 22     $this->{$CanBeNull} = 0 if not exists $this->{$CanBeNull}; | 
|  | 23     UNIVERSAL::isa($this->{$Type},'IMPL::SQL::Schema::Type') or die new IMPL::InvalidArgumentException('a type is required for the column',$this->{$Name}); | 
|  | 24 } | 
|  | 25 | 
|  | 26 sub isEqualsStr { | 
|  | 27     my ($a,$b) = @_; | 
|  | 28 | 
|  | 29     if (defined $a and defined $b) { | 
|  | 30         return $a eq $b; | 
|  | 31     } else { | 
|  | 32         if (defined $a or defined $b) { | 
|  | 33             return 0; | 
|  | 34         } else { | 
|  | 35             return 1; | 
|  | 36         } | 
|  | 37     } | 
|  | 38 } | 
|  | 39 | 
|  | 40 sub isEquals { | 
|  | 41     my ($a,$b) = @_; | 
|  | 42 | 
|  | 43     if (defined $a and defined $b) { | 
|  | 44         return $a == $b; | 
|  | 45     } else { | 
|  | 46         if (defined $a or defined $b) { | 
|  | 47             return 0; | 
|  | 48         } else { | 
|  | 49             return 1; | 
|  | 50         } | 
|  | 51     } | 
|  | 52 } | 
|  | 53 | 
|  | 54 sub isSame { | 
|  | 55     my ($this,$other) = @_; | 
|  | 56 | 
|  | 57     return ($this->{$Name} eq $other->{$Name} and $this->{$CanBeNull} == $other->{$CanBeNull} and isEqualsStr($this->{$DefaultValue}, $other->{$DefaultValue}) and $this->{$Type}->isSame($other->{$Type})); | 
|  | 58 } | 
|  | 59 | 
|  | 60 1; |