ETLp

 view release on metacpan or  search on metacpan

lib/ETLp/Audit/FileProcess.pm  view on Meta::CPAN

class ETLp::Audit::FileProcess with (ETLp::Role::Config, ETLp::Role::Schema,
                             ETLp::Role::Audit) {
    
    use ETLp::Types;
    use Try::Tiny;
    use ETLp::Exception;
    
    has 'item' =>
      (is => 'ro', isa => 'ETLp::Audit::Item', required => 1, weak_ref => 1);
    has 'filename' => (is => 'ro', isa => 'Str',     required => 1);
    has 'config'   => (is => 'ro', isa => 'HashRef', required => 1);
    
=head2 method_id

Return the primary key of the file process record

=cut
    method id {
        return $self->{id};
    }
    

lib/ETLp/Audit/Item.pm  view on Meta::CPAN

    use Try::Tiny;
    use ETLp::Types;
    use ETLp::Audit::FileProcess;
    use DateTime;
    
    has 'job' =>
      (is => 'ro', isa => 'ETLp::Audit::Job', required => 1, weak_ref => 1);
    has 'name'   => (is => 'ro', isa => 'Str',     required => 1);
    has 'phase'  => (is => 'ro', isa => 'Str',     required => 1);
    has 'type'   => (is => 'ro', isa => 'Str',     required => 1);
    has 'config' => (is => 'ro', isa => 'HashRef', required => 1);
    
    method id {
        return $self->{id};
    }
    
=head2 update_message

Sets the item message

=cut

lib/ETLp/Audit/Job.pm  view on Meta::CPAN

=head2 item

The currently executing item

=cut
    
    has 'session_id' => (is => 'rw', isa => 'Int', required => 0);   
    has 'id' => (is => 'rw', isa => 'Int', required => 0);
    has 'name' => (is => 'ro', isa => 'Str', required => 1);
    has 'section' => (is => 'ro', isa => 'Str', required => 1);
    has 'config'  => (is => 'ro', isa => 'HashRef', required => 1);
    
=head1 METHODS

=head2 create_item

Create an audit item

=head3 parameters (Hash)

    * Str name: Name of the item

lib/ETLp/Execute/Iteration.pm  view on Meta::CPAN


class ETLp::Execute::Iteration with ETLp::Role::Config {
    use Try::Tiny;
    use Data::Dumper;
    use File::LocalizeNewlines;
    use File::Basename;
    use File::Copy;
    use Carp;
    use ETLp::Exception;
    
    has 'pipeline' => (is => 'ro', isa => 'ArrayRef', required => 1);
    has 'config'   => (is => 'ro', isa => 'HashRef',  required => 1);
    
    $Data::Dumper::Deparse = 1;
    
    method run {
        my $warning = 0;
        
        try {
            FILE_LOOP: foreach my $filename ($self->_get_source_files) {
                ITEM_LOOP:
                foreach my $item (@{$self->pipeline}) {

lib/ETLp/Execute/Serial.pm  view on Meta::CPAN

    * void

=cut

class ETLp::Execute::Serial with ETLp::Role::Config {
    use Try::Tiny;
    use Carp;
    use ETLp::Exception;
    use Data::Dumper;
    
    has 'pipeline' => (is => 'ro', isa => 'ArrayRef', required => 1);
    has 'config'   => (is => 'ro', isa => 'HashRef', required => 1);
    
    method run {
        my $warning = 0;
        
        try {
            ITEM_LOOP: foreach my $item (@{$self->pipeline}) {
                $self->logger->debug("Item: " . Dumper($item));
    
                # Create an audit entry for the item
                my $audit_item = $self->audit->create_item(

lib/ETLp/File/Read/CSV.pm  view on Meta::CPAN

    * A hashref where each key is populated with the filed value from the
      file record
    
=cut

class ETLp::File::Read::CSV extends ETLp::File::Read {
    use Text::CSV;
    use Data::Dumper;
    use ETLp::Exception;
    
    has 'csv_options' => (is => 'ro', isa => 'HashRef', default => sub { {} });
    has 'fields' => (is => 'ro', isa => 'ArrayRef');
    has 'ignore_field_count' => (is => 'ro', isa => 'Bool', default => 0);

    method get_fields {
        my $line = $self->get_line;
        return unless $line;
        my $csv    = $self->{_csv};
        my $status = $csv->parse($line);

        if ($status) {
            my @columns = $csv->fields;

lib/ETLp/File/Validate.pm  view on Meta::CPAN

    use Time::Piece;
    use ETLp::Exception;
    use ETLp::File::Config;

    has 'data_directory'        => (is => 'ro', isa => 'Str');
    has 'file_config_directory' => (is => 'ro', isa => 'Str');
    has 'file_definition' => => (is => 'ro', isa => 'Str', required => 1);
    has 'type'     => (is => 'ro', isa => 'Str',  required => 1);
    has 'localize' => (is => 'ro', isa => 'Bool', default  => 0);
    has 'skip'     => (is => 'ro', isa => 'Int', default  => 0);
    has 'csv_options' => (is => 'ro', isa => 'HashRef', required => 0, default => sub{{}});

    our @errors;

=head2 validate

Validate the file

Parameters

    * The name of the file being validated,

lib/ETLp/ItemBuilder.pm  view on Meta::CPAN

=cut

class ETLp::ItemBuilder with ETLp::Role::Config {
    use ETLp::Exception;
    use Data::Dumper;
    use UNIVERSAL::require;
    use Try::Tiny;
    use Clone qw(clone);
    use File::Basename;

    has 'plugins'       => (is => 'ro', isa => 'HashRef', required => 1);
    has 'pipeline_type' => (is => 'ro', isa => 'Str',     required => 1);
    has 'allow_env_vars' =>
      (is => 'ro', isa => 'Bool', required => 0, default => 0);
    has 'env_conf' =>
      (is => 'ro', isa => 'HashRef', required => 0, default => sub { {} });
    has 'app_root' => (is => 'ro', isa => 'Maybe[Str]', required => 1);
    has 'config'   => (is => 'ro', isa => 'HashRef',    required => 1);

    # Recursively navigate the items, replacing the placeholders
    # with their values
    
    method _parse_item(HashRef $config, $item, Maybe [Str] $filename) {
        my $app_root = $self->app_root;
        my %master_config = (%{$self->env_conf}, %{$config->{config}});
        $self->logger->debug("Master config: " . Dumper(\%master_config));
        if (ref $item eq 'HASH') {
            foreach my $item_key (keys %$item) {

lib/ETLp/Loader/CSV.pm  view on Meta::CPAN

    use ETLp::File::Read::CSV;
    use Data::Dumper;
    use File::Basename;
    use Convert::NLS_DATE_FORMAT qw(posix2oracle);
    use DBI::Const::GetInfoType;
    use ETLp::Exception;
    use Try::Tiny;
    
    has 'directory' => (is => 'ro', isa => 'Str');
    has 'table'     => (is => 'ro', isa => 'Str', required => 1);
    has 'columns'   => (is => 'ro', isa => 'ArrayRef', required => 1);
    has 'rules'     => (is => 'ro', isa => 'HashRef', required => 0);
    has 'localize'  => (is => 'ro', isa => 'Int', default => 0);
    has 'error'     => (is => 'rw', isa => 'Str');
    has 'file_id'   => (is => 'ro', isa => 'Int', required => 1);
    has 'skip'      => (is => 'ro', isa => 'Int', required => 0, default => 0);
    has 'ignore_field_count' => (is => 'ro', isa => 'Bool', default => 0);
    has 'csv_options' => (is => 'ro', isa => 'HashRef', required => 0,
                          default => sub{{allow_whitespace => 1}});
    
=head1 METHODS

=head2 new

Create a loader, specifying the characteristics

Parameters

lib/ETLp/Loader/OracleSQLLoader.pm  view on Meta::CPAN

    has 'table'            => (is => 'ro', isa => 'Str',  required => 1);
    has 'filename'         => (is => 'ro', isa => 'Str',  required => 1);
    has 'specification'    => (is => 'ro', isa => 'Str',  required => 1);
    has 'logfile'          => (is => 'ro', isa => 'Maybe[Str]');
    has 'badfile'          => (is => 'ro', isa => 'Maybe[Str]');
    has 'discardfile'      => (is => 'ro', isa => 'Maybe[Str]');
    has 'keep_controlfile' => (is => 'ro', isa => 'Bool', default  => 0);
    has 'keep_logfile'     => (is => 'ro', isa => 'Bool', default  => 1);
    has 'keep_badfile'     => (is => 'ro', isa => 'Bool', default  => 1);
    has 'keep_discardfile' => (is => 'ro', isa => 'Bool', default  => 1);
    has 'parameters'       => (is => 'ro', isa => 'Maybe[HashRef]');
    has 'localize'         => (is => 'ro', isa => 'Bool', default  => 0);
    has 'mode' => (is => 'ro', isa => 'SQLLoaderMode', default => 'append');
    
    our @keywords = qw/
        discardmax
        skip
        load
        errors
        rows
        bindsize

lib/ETLp/Plugin.pm  view on Meta::CPAN


    method run(Str $filename) {
        .... <<code>> ....
    }

=cut

class ETLp::Plugin with ETLp::Role::Config {
    use ETLp::Exception;
    
    has 'config'        => (is => 'ro', isa => 'HashRef', required => 1);
    has 'item'          => (is => 'ro', isa => 'HashRef', required => 1);
    has 'original_item' => (is => 'ro', isa => 'HashRef', required => 1);
    has 'env_conf'      => (is => 'ro', isa => 'HashRef', required => 1);

    sub type {
        ETLpException->throw(error => "Abstract method 'type'");
    }

    method run {
        ETLpException->throw(error => "Abstract method 'run'");
    }
}



( run in 0.732 second using v1.01-cache-2.11-cpan-5f2e87ce722 )