Mercurial > pub > Impl
view Lib/IMPL/SQL/Schema/Column.pm @ 166:4267a2ac3d46
Added Class::Template,
Rewritten SQL::Schema
'use parent' directive instead of 'use base'
author | wizard |
---|---|
date | Sat, 23 Apr 2011 23:12:06 +0400 |
parents | 76515373dac0 |
children | 1f7a6d762394 |
line wrap: on
line source
use strict; package IMPL::SQL::Schema::Column; use parent qw(IMPL::Object IMPL::Object::Autofill); use IMPL::Class::Property; use IMPL::Class::Property::Direct; BEGIN { public _direct property name => prop_get; public _direct property type => prop_get; public _direct property isNullable => prop_get; public _direct property defaultValue => prop_get; public _direct property tag => prop_get; } __PACKAGE__->PassThroughArgs; sub CTOR { my $this = shift; $this->{$name} or die new IMPL::InvalidArgumentException('a column name is required'); $this->{$isNullable} = 0 if not exists $this->{$isNullable}; UNIVERSAL::isa($this->{$type},'IMPL::SQL::Schema::Type') or die new IMPL::InvalidArgumentException('a type is required for the column',$this->{$name}); } sub isEqualsStr { my ($a,$b) = @_; if (defined $a and defined $b) { return $a eq $b; } else { if (defined $a or defined $b) { return 0; } else { return 1; } } } sub isEquals { my ($a,$b) = @_; if (defined $a and defined $b) { return $a == $b; } else { if (defined $a or defined $b) { return 0; } else { return 1; } } } sub isSame { my ($this,$other) = @_; return ($this->{$name} eq $other->{$name} and $this->{$isNullable} == $other->{$isNullable} and isEqualsStr($this->{$defaultValue}, $other->{$defaultValue}) and $this->{$type}->isSame($other->{$type})); } 1;