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

📄 fieldset.pm

📁 普通的ETL工具
💻 PM
📖 第 1 页 / 共 2 页
字号:
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::OutputFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'output_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::OutputField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::GroupByFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'group_by_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::GroupByField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::ProcessFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'allow_duplicates', default => 1),
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'process_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::ProcessField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::TransferFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'transfer_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::TransferField');
	use Class::STL::ClassMembers::Constructor;
	sub map_input_fields
	{
		my $self = shift;
		my $input_fields = shift;
		my $dataset = shift;
		my $aggregate_type_name = shift;
		my $prefix = shift; #NOTE: need this to distinguish similarly named join fields in xref;

		foreach (grep($_->name() !~ /^_/, $input_fields->to_array())) {
			$self->add(
#<				name => (defined($prefix) ? ($prefix . '_' . $_->name()) : $_->name()), 
				name => $_->name(),
				input_field => $_,
				aggregate_type => $aggregate_type_name,
				dataset => $dataset,
				xml_type => $_->xml_type(),
				target_name => (defined($prefix) ? ($prefix . '::' . $_->name()) : $_->name()), 
			);
		}
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::JoinFields; #--> InputJoinFields
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'input_join_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::JoinField');
																						#-->InputJoinField
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::TableFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers qw( table ),
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'table_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::TableField');
	use Class::STL::ClassMembers::Constructor;
	sub add
	{
		my $self = shift;
		$self->SUPER::add(@_, table => $self->table());
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::TableFields::Dbi;
	use base qw(ETL::Pequel3::Type::FieldSet::TableFields);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'table_fields_dbi'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::DbiField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::RejectFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'reject_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::RejectField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::RejectReasons;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'reject_reasons'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::RejectReason');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::RepeatExpressions;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'repeat_expressions'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::Expression');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::FilterExpressions;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'filter_expressions'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::Expression');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::SortFields;
	use base qw(ETL::Pequel3::Type::FieldSet::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'sort_fields'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Field::SortField');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
# CATALOGUE
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::Catalogue::Abstract;
	use base qw(ETL::Pequel3::Type::Catalogue);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'target_mem_name', default => 'catalogue_name'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::FieldSet::Abstract');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::FieldSet::Catalogue;
	use base qw(ETL::Pequel3::Type::FieldSet::Catalogue::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'fieldsets');
	use Class::STL::ClassMembers::SingletonConstructor;
	sub new_extra
	{
		my $self = shift;
		$self->push_back(
			ETL::Pequel3::Type::FieldSet::InputFields->_new(),
			ETL::Pequel3::Type::FieldSet::OutputFields->_new(),
			ETL::Pequel3::Type::FieldSet::GroupByFields->_new(),
			ETL::Pequel3::Type::FieldSet::ProcessFields->_new(),
			ETL::Pequel3::Type::FieldSet::TransferFields->_new(),
			ETL::Pequel3::Type::FieldSet::JoinFields->_new(),
			ETL::Pequel3::Type::FieldSet::TableFields->_new(),
			ETL::Pequel3::Type::FieldSet::TableFields::Dbi->_new(),
			ETL::Pequel3::Type::FieldSet::RejectFields->_new(),
			ETL::Pequel3::Type::FieldSet::RejectReasons->_new(),
			ETL::Pequel3::Type::FieldSet::RepeatExpressions->_new(),
			ETL::Pequel3::Type::FieldSet::FilterExpressions->_new(),
			ETL::Pequel3::Type::FieldSet::SortFields->_new(),
		);
		return $self;
	}
}
# ----------------------------------------------------------------------------------------------------
1;

⌨️ 快捷键说明

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