📄 fieldset.pm
字号:
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 + -