diff Lib/IMPL/SQL/Schema/Traits.pm @ 165:76515373dac0

Added Class::Template, Rewritten SQL::Schema 'use parent' directive instead of 'use base'
author wizard
date Sat, 23 Apr 2011 23:06:48 +0400
parents eb3e9861a761
children 1f7a6d762394
line wrap: on
line diff
--- a/Lib/IMPL/SQL/Schema/Traits.pm	Mon Mar 28 01:36:24 2011 +0400
+++ b/Lib/IMPL/SQL/Schema/Traits.pm	Sat Apr 23 23:06:48 2011 +0400
@@ -1,14 +1,19 @@
-package IMPL::SQL::Traits;
+package IMPL::SQL::Schema::Traits;
 use strict;
 use IMPL::_core::version;
 use IMPL::Exception();
 
-use IMPL::base qw(IMPL::Object);
+use parent qw(IMPL::Object);
+use IMPL::Code::Loader();
+
+BEGIN {
+	IMPL::Code::Loader->Provide(__PACKAGE__);
+}
 
 ###################################################
 
-package IMPL::SQL::Traits::Table;
-use IMPL::base qw(IMPL::Object::Fields);
+package IMPL::SQL::Schema::Traits::Table;
+use base qw(IMPL::Object::Fields);
 
 use fields qw(
 	name
@@ -20,16 +25,16 @@
 sub CTOR {
 	my ($this,$table,$columns,$constraints,$options) = @_;
 	
-	$this->{name} = $table;
-	$this->{columns} = $columns;
-	$this->{constraints} = $constraints;
-	$this->{options} = $options;
+	$this->{name} = $table or die new IMPL::InvalidArgumentException(table => "A table name is required");
+	$this->{columns} = $columns if defined $columns;
+	$this->{constraints} = $constraints if defined $constraints;
+	$this->{options} = $options if defined $options;
 }
 
 ###################################################
 
-package IMPL::SQL::Traits::Column;
-use IMPL::base qw(IMPL::Object::Fields);
+package IMPL::SQL::Schema::Traits::Column;
+use base qw(IMPL::Object::Fields);
 
 use fields qw(
 	name
@@ -51,8 +56,8 @@
 
 ##################################################
 
-package IMPL::SQL::Traits::Constraint;
-use IMPL::base qw(IMPL::Object::Fields);
+package IMPL::SQL::Schema::Traits::Constraint;
+use base qw(IMPL::Object::Fields);
 
 use fields qw(
 	name
@@ -70,40 +75,40 @@
 
 ##################################################
 
-package IMPL::SQL::Traits::PrimaryKey;
+package IMPL::SQL::Schema::Traits::PrimaryKey;
 
-use IMPL::base qw(IMPL::SQL::Traits::Constraint);
+use base qw(IMPL::SQL::Schema::Traits::Constraint);
 
 __PACKAGE__->PassThroughArgs;
 
 ##################################################
 
-package IMPL::SQL::Traits::Index;
+package IMPL::SQL::Schema::Traits::Index;
 
-use IMPL::base qw(IMPL::SQL::Traits::Constraint);
+use base qw(IMPL::SQL::Schema::Traits::Constraint);
 
 __PACKAGE__->PassThroughArgs;
 
 ##################################################
 
-package IMPL::SQL::Traits::Unique;
+package IMPL::SQL::Schema::Traits::Unique;
 
-use IMPL::base qw(IMPL::SQL::Traits::Constraint);
+use base qw(IMPL::SQL::Schema::Traits::Constraint);
 
 __PACKAGE__->PassThroughArgs;
 
 ##################################################
 
-package IMPL::SQL::Traits::ForeignKey;
+package IMPL::SQL::Schema::Traits::ForeignKey;
 
-use IMPL::base qw(IMPL::SQL::Traits::Constraint);
+use base qw(IMPL::SQL::Schema::Traits::Constraint);
 use fields qw(
 	foreignTable
 	foreignColumns
 );
 
 our %CTOR = (
-	'IMPL::SQL::Traits::Constraint' => sub { @_[0..2] }
+	'IMPL::SQL::Schema::Traits::Constraint' => sub { @_[0..2] }
 );
 
 sub CTOR {
@@ -116,9 +121,9 @@
 
 ##################################################
 
-package IMPL::SQL::Traits::CreateTable;
+package IMPL::SQL::Schema::Traits::CreateTable;
 
-use IMPL::base qw(IMPL::SQL::Traits);
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 use IMPL::lang;
 
@@ -129,8 +134,8 @@
 sub CTOR {
 	my ($this,$table) = @_;
 	
-	die new IMPL::InvalidArgumentException("table", "An object of IMPL::SQL::Traits::Table type is required")
-		unless is $table, typeof IMPL::SQL::Traits::Table;
+	die new IMPL::InvalidArgumentException("table", "An object of IMPL::SQL::Schema::Traits::Table type is required")
+		unless is $table, typeof IMPL::SQL::Schema::Traits::Table;
 	
 	$this->table($table);
 }
@@ -146,8 +151,8 @@
 
 ##################################################
 
-package IMPL::SQL::Traits::DropTable;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::DropTable;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 
 BEGIN {
@@ -172,8 +177,8 @@
 
 ##################################################
 
-package IMPL::SQL::Traits::RenameTable;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::RenameTable;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 
 BEGIN {
@@ -200,8 +205,8 @@
 
 #################################################
 
-package IMPL::SQL::Traits::AlterTableAddColumn;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::AlterTableAddColumn;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 use IMPL::lang;
 
@@ -215,8 +220,8 @@
 	
 	$this->tableName($tableName) or die new IMPL::InvalidArgumentException("A table name is required");
 	
-	die new IMPL::InvalidArgumentException("A column should be a IMPL::SQL::Traits::Column object")
-		unless is $column, typeof IMPL::SQL::Traits::Column;
+	die new IMPL::InvalidArgumentException("A column should be a IMPL::SQL::Schema::Traits::Column object")
+		unless is $column, typeof IMPL::SQL::Schema::Traits::Column;
 		
 	$this->column($column);
 }
@@ -235,8 +240,8 @@
 
 #################################################
 
-package IMPL::SQL::Traits::AlterTableDropColumn;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::AlterTableDropColumn;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 
 BEGIN {
@@ -264,8 +269,8 @@
 
 #################################################
 
-package IMPL::SQL::Traits::AlterTableChangeColumn;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::AlterTableChangeColumn;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 
 BEGIN {
@@ -305,8 +310,8 @@
 
 #################################################
 
-package IMPL::SQL::Traits::AlterTableAddConstraint;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::AlterTableAddConstraint;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 use IMPL::lang;
 
@@ -320,8 +325,8 @@
 	
 	$this->tableName($table) or die new IMPL::InvalidArgumentException( tableName => "A table name is required");
 	
-	die new IMPL::InvalidArgumentException(constaraint => "A valid IMPL::SQL::Traits::Constarint is required")
-		unless is $constraint, typeof IMPL::SQL::Traits::Constraint;
+	die new IMPL::InvalidArgumentException(constaraint => "A valid IMPL::SQL::Schema::Traits::Constarint is required")
+		unless is $constraint, typeof IMPL::SQL::Schema::Traits::Constraint;
 		
 	$this->constraint($constraint);
 }
@@ -340,8 +345,8 @@
 
 #################################################
 
-package IMPL::SQL::Traits::AlterTableDropConstraint;
-use IMPL::base qw(IMPL::SQL::Traits);
+package IMPL::SQL::Schema::Traits::AlterTableDropConstraint;
+use parent qw(-norequire IMPL::SQL::Schema::Traits);
 use IMPL::Class::Property;
 
 BEGIN {
@@ -382,7 +387,7 @@
 
 Изменения схемы могу быть представлены в виде последовательности примитивных операций.
 Правила выполнения последовательности примитывных действий могут варьироваться
-в зависимости от процессора, который их выполняет. Например C<IMPL::SQL::Traits::Processor>.
+в зависимости от процессора, который их выполняет. Например C<IMPL::SQL::Schema::Traits::Processor>.
 
 Данные, которые содержаться в примитивных операциях не могут существовать независимо от схемы.
 
@@ -418,7 +423,7 @@
 
 =over
 
-=item C<IMPL::SQL::Traits::CreateTable>
+=item C<IMPL::SQL::Schema::Traits::CreateTable>
 
 Создает таблицу
 
@@ -428,11 +433,11 @@
 
 =item C<[get]table>
 
-C<IMPL::SQL::Traits::Table> - описание создаваемой таблицы
+C<IMPL::SQL::Schema::Traits::Table> - описание создаваемой таблицы
 
 =back
 
-=item C<IMPL::SQL::Traits::DropTable>
+=item C<IMPL::SQL::Schema::Traits::DropTable>
 
 Удалает таблицу по имени
 
@@ -446,7 +451,7 @@
 
 =back
 
-=item C<IMPL::SQL::Traits::RenameTable>
+=item C<IMPL::SQL::Schema::Traits::RenameTable>
 
 =over
 
@@ -462,7 +467,7 @@
 
 =back
 
-=item C<IMPL::SQL::Traits::AlterTableAddColumn>
+=item C<IMPL::SQL::Schema::Traits::AlterTableAddColumn>
 
 Добавляет столбец в таблицу
 
@@ -476,11 +481,11 @@
 
 =item C<[get]column>
 
-C<IMPL::SQL::Traits::Column> - описание столбца который нужно добавить 
+C<IMPL::SQL::Schema::Traits::Column> - описание столбца который нужно добавить 
 
 =back
 
-=item C<IMPL::SQL::Traits::AlterTableDropColumn>
+=item C<IMPL::SQL::Schema::Traits::AlterTableDropColumn>
 
 Удаляет столбец из таблицы
 
@@ -498,7 +503,7 @@
 
 =back
 
-=item C<IMPL::SQL::Traits::AlterTableChangeColumn>
+=item C<IMPL::SQL::Schema::Traits::AlterTableChangeColumn>
 
 Меняет описание столбца
 
@@ -534,7 +539,7 @@
 
 =back
 
-=item C<IMPL::SQL::Traits::AlterTableAddConstraint>
+=item C<IMPL::SQL::Schema::Traits::AlterTableAddConstraint>
 
 Базовый класс для операций по добавлению ограничений
 
@@ -548,11 +553,11 @@
 
 =item C<[get]constraint>
 
-C<IMPL::SQL::Traits::Constraint> - описние ограничения, которое нужно добавить.
+C<IMPL::SQL::Schema::Traits::Constraint> - описние ограничения, которое нужно добавить.
 
 =back
 
-=item C<IMPL::SQL::Traits::AlterTableDropConstraint>
+=item C<IMPL::SQL::Schema::Traits::AlterTableDropConstraint>
 
 Удаляет ограничение на таблицу