⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 properties.pm

📁 普通的ETL工具
💻 PM
📖 第 1 页 / 共 4 页
字号:
# vim:ts=4 sw=4# ----------------------------------------------------------------------------------------------------#  Name		: ETL::Pequel3::Type::Properties.pm#  Created	: 5 May 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::Properties;require 5.005_62;use strict;use warnings;use stl;# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Abstract;	use base qw(Class::STL::Element);	use Class::STL::ClassMembers 		qw( 			name 			default 			value 			validate 			validate_catalogue			description 		),		# validate: use xml-schema types (xs:token, xs:string, etc) or include pattern for xs:pattern		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 1), # -> configuration		Class::STL::ClassMembers::DataMember->new(name => 'cmd_line', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'required', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'token'),		Class::STL::ClassMembers::DataMember->new(name => 'CDATA', default => 0);	use Class::STL::ClassMembers::Constructor;	sub new_extra	{		my $self = shift;		$self->value($self->default())			if (defined($self->default()) && !defined($self->value()));	}	sub xml_schema	{		my $self = shift;		my $xsd = shift;		my $xml_node = shift || $xsd->schema_root();		return if ($xsd->exists('element', $self->name(), $xml_node));		$xsd->comment($xml_node, "Property Type: @{[ $self->name() ]} [@{[ ref($self) ]}]");		my $element = $xsd->xs_element($xml_node, 'name' => $self->name());		if ($xsd->configuration()->xmlschema_annotation() && defined($self->description()) 			&& $self->description() ne '') 		{			my $doc = $xsd->xs_documentation($xsd->xs_annotation($element), 'xml:lang' => 'en');			$xsd->text($doc, $self->description());		}		my $restriction = $xsd->xs_restriction($xsd->xs_simpleType($element),			'base' => ($xsd->namespace_prefix() . ':' .				(defined($self->validate_catalogue())				? ($xsd->POM()->catalogue->exists($self->validate_catalogue())->to_array())[0]->xs_type()				: $self->xs_type()))	   	);		if (defined($self->validate_catalogue())) 		{			my $n = $xsd->POM()->catalogue->exists($self->validate_catalogue())->target_mem_name();			foreach ($xsd->POM()->catalogue->exists($self->validate_catalogue())->to_array()) 			{				my $enum = $xsd->xs_enumeration($restriction, 'value' => $_->$n());				if ($xsd->configuration()->xmlschema_annotation() && $_->can('description') && defined($_->description()))				{					my $doc = $xsd->xs_documentation($xsd->xs_annotation($enum), 'xml:lang' => 'en');					$xsd->text($doc, $_->description());				}			}		}		elsif (defined($self->validate()) && $self->validate() =~ /^\^\(.+\|.+\)\$/)		{			my @enum = split(/[\(\)\|]/, $self->validate());			shift(@enum);			pop(@enum);			foreach (@enum) {				$xsd->xs_enumeration($restriction, 'value' => $_);			}		}		elsif (defined($self->validate()))		{			$xsd->xs_pattern($restriction, 'value' => $self->validate());		}	}}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Configuration::Abstract;	use base qw(ETL::Pequel3::Type::Properties::Abstract);	use Class::STL::ClassMembers;	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::PequelHomePage;	use base qw(ETL::Pequel3::Type::Properties::Abstract);	use ETL::Pequel3;	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'pequel_home_page'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 'http://sourceforge.net/projects/pequel'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Pequel Home Page');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Version;	use base qw(ETL::Pequel3::Type::Properties::Abstract);	use ETL::Pequel3;	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'version'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => $ETL::Pequel3::VERSION),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'decimal'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Display Pequel Version information');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Prefix;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'prefix'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => ''),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Directory pathname prefix');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::XmlParser;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'xml_parser'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 'default'),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0), #maybe not??		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'NMTOKEN'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Default XML parser type name');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::XmlSchema;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'xml_schema'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 'default'),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'NMTOKEN'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Default XML schema generator type name');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::XmlSchemaAnnotation;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'xmlschema_annotation'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'validate', default => '^(0|1)$'),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'byte'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Print annotations in pequel.xsd xml-schema');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::XmlSchemaNSPrefix;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'xmlschema_ns_prefix'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 'xs'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'validate', default => '\w+'),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'NMTOKEN'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Namespace prefix for token names in pequel.xsd xml-schema');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::ExecDir;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'exec_dir'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => './_Pequel'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Temporary directory for generated programs');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::TraceDir;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'trace_dir'),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => './_Pequel'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Temporary directory for trace files and generated programs');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Transfer;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'transfer'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'value', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'validate', default => '^(0|first|last)$'),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'NMTOKEN'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Copy input fields (including derived fields) to output');	use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{	package ETL::Pequel3::Type::Properties::Hash;	use base qw(ETL::Pequel3::Type::Properties::Configuration::Abstract);	use Class::STL::ClassMembers		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'hash'),		Class::STL::ClassMembers::DataMember->new(name => 'user_program_info', default => 1),		Class::STL::ClassMembers::DataMember->new(name => 'default', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'global', default => 0),		Class::STL::ClassMembers::DataMember->new(name => 'validate', default => '^(0|1)$'),		Class::STL::ClassMembers::DataMember->new(name => 'xs_type', default => 'byte'),		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Generate in memory -- input data can be unsorted');	use Class::STL::ClassMembers::Constructor;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -