📄 configuration.pm
字号:
# vim:ts=4 sw=4# ----------------------------------------------------------------------------------------------------# Name : ETL::Pequel3::Type::Section::Configuration.pm# Created : 22 June 2006# Author : Mario Gaffiero (gaffie)## Copyright 1999-2007 Mario Gaffiero.# # This file is part of Pequel(TM).# # Pequel is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; version 2 of the License.# # Pequel is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.# # You should have received a copy of the GNU General Public License# along with Pequel; if not, write to the Free Software# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA# ----------------------------------------------------------------------------------------------------# Modification History# When Version Who What# ----------------------------------------------------------------------------------------------------package ETL::Pequel3::Type::Section::Configuration;require 5.005_62;use strict;use warnings;use ETL::Pequel3::Type::Section;# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::Section::Configuration; use base qw(ETL::Pequel3::Type::Section::Abstract); use Class::STL::ClassMembers qw( config ), Class::STL::ClassMembers::DataMember->new(name => 'target_mem_name', default => 'section_name'), Class::STL::ClassMembers::DataMember->new(name => 'section_name', default => 'configuration'), Class::STL::ClassMembers::DataMember->new(name => 'required', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'item_type', default => 'ETL::Pequel3::Type::Section::Configuration::Item'), Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => "@{[ __PACKAGE__ ]}"), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'This section is used to initialise any configuration properties for the I<pequel> object. Please refer to the F<Configuration Property> chapter for detailed information on each property.'); use Class::STL::ClassMembers::Constructor; sub new_extra { my $self = shift; $self->config(ETL::Pequel3::Type::Properties::User->new()); return $self; } sub prepare { my $self = shift; foreach my $i ($self->items()->to_array()) { my $p; $self->err()->user_error(10255, "Unkown configuration property '@{[ $i->property_name() ]}'") if ( !($p = $self->pequel_ref()->catalogue()->properties()->exists($i->property_name())) || !$p->isa('ETL::Pequel3::Type::Properties::Configuration::Abstract') ); $p->global() ? $p->value($i->value()) : $self->config()->exists($i->property_name())->value($i->value()); $self->err()->trace_msg(10, "@{[ $self->pequel_ref()->pequel_name() ]} -->" . "Configuration:" . $i->property_name() . "=" . ($p->global() ? $p->value() . " (global)" : $self->config()->exists($i->property_name())->value()) ); } } sub setup { my $self = shift; $self->select(); # create default configuration; } package ETL::Pequel3::Type::Section::Configuration::Item; use base qw(ETL::Pequel3::Type::Section::Item::Abstract); use Class::STL::ClassMembers; use Class::STL::ClassMembers::Constructor; sub new_extra { my $self = shift; $self->attributes()->push_back( $self->attributes()->factory(name => 'property_name', required => 1), $self->attributes()->factory(name => 'value', required => 1) ); }}# ----------------------------------------------------------------------------------------------------1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -