From 135dec41d73389e360e2a40a0c5abe0537281a0b Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Mon, 5 Nov 2018 01:01:02 +0100 Subject: [PATCH] TT#46752 AMA format writer objects: structure 9013, 9014 Change-Id: I93498b1bcdb6bd7923b1f1c1d49a76ae0c4b8b0e --- .../Projects/Export/Ama/Format/Block.pm | 42 -------- .../Export/Ama/Format/Fields/BlockCount.pm | 49 +++++++++ .../Fields/{CallTypeCode.pm => CallType.pm} | 12 ++- .../Ama/Format/Fields/FileSequenceNumber.pm | 49 +++++++++ .../Export/Ama/Format/Fields/GenericIssue.pm | 54 ++++++++++ .../Export/Ama/Format/Fields/RecordCount.pm | 49 +++++++++ .../Ama/Format/Fields/ServiceFeature.pm | 10 +- .../Export/Ama/Format/Fields/TracerType.pm | 65 ++++++++++++ .../Projects/Export/Ama/Format/Record.pm | 4 +- .../Ama/Format/Structures/Structure0510.pm | 4 +- .../Ama/Format/Structures/Structure9013.pm | 91 ++++++++++++++++ .../Ama/Format/Structures/Structure9014.pm | 99 ++++++++++++++++++ .../Projects/Export/Ama/test.ama | Bin 79 -> 79 bytes .../BulkProcessor/Projects/Export/Ama/test.pl | 49 +++++++-- 14 files changed, 516 insertions(+), 61 deletions(-) delete mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Block.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/BlockCount.pm rename lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/{CallTypeCode.pm => CallType.pm} (83%) create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/FileSequenceNumber.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/GenericIssue.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/RecordCount.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/TracerType.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9013.pm create mode 100644 lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9014.pm diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Block.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Block.pm deleted file mode 100644 index c2683d8..0000000 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Block.pm +++ /dev/null @@ -1,42 +0,0 @@ -package NGCP::BulkProcessor::Projects::Export::Ama::Format::Block; -use strict; - -## no critic - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT_OK = qw( - -); - -sub new { - - my $class = shift; - my $self = bless {}, $class; - my %params = @_; - ( - $self->{name}, - ) = @params{qw/ - name - /}; - - return $self; - -} - -sub print { - my $self = shift; - - -} - -sub get_block_descriptor_word { - my $self = shift; - #return total length in bytes (up to 256*256 bytes) -} - -sub pad { - -} - -1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/BlockCount.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/BlockCount.pm new file mode 100644 index 0000000..99897ba --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/BlockCount.pm @@ -0,0 +1,49 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::BlockCount; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Field qw($TERMINATOR); + +#use NGCP::BulkProcessor::Array qw(contains); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::Field); +our @EXPORT_OK = qw( + +); + +my $field_name = "block count"; +my $length = 6; +my @param_names = qw/block_count/; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Field->new( + $class, + name => $field_name, + length => $length, + @_); + + return $self; + +} + +sub _get_param_names { + + my $self = shift; + return @param_names; + +} + +sub get_hex { + + my $self = shift; + my ($block_count) = $self->_get_params(@_); + die("invalid block count '$block_count'") if ($block_count < 0 or $block_count > 99999); + return sprintf('%05d',$block_count) . $TERMINATOR; + +} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallTypeCode.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallType.pm similarity index 83% rename from lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallTypeCode.pm rename to lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallType.pm index eceb8d0..e7601df 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallTypeCode.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/CallType.pm @@ -1,4 +1,4 @@ -package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallTypeCode; +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType; use strict; ## no critic @@ -12,6 +12,7 @@ our @EXPORT_OK = qw( $STATION_SPECIAL_CALLING $FLAT_RATE $FREE_CALL + $TRANSFER $OPERATING_COMPANY_NUMBER_SERVICE_CALLS $MDRRAO $ON_NET_PRIVATE_VIRTUAL_NETWORK @@ -20,12 +21,13 @@ our @EXPORT_OK = qw( my $field_name = "call type code"; my $length = 4; -my @param_names = qw/call_type_code/; +my @param_names = qw/call_type/; our $STATION_PAID = '006'; our $STATION_SPECIAL_CALLING = '015'; our $FLAT_RATE = '067'; our $FREE_CALL = '074'; +our $TRANSFER = '092'; our $OPERATING_COMPANY_NUMBER_SERVICE_CALLS = '142'; our $MDRRAO = '159'; our $ON_NET_PRIVATE_VIRTUAL_NETWORK = '160'; @@ -55,9 +57,9 @@ sub _get_param_names { sub get_hex { my $self = shift; - my ($call_type_code) = $self->_get_params(@_); - die("invalid call type code '$call_type_code'") unless length($call_type_code) == 3; - return $call_type_code . $TERMINATOR; + my ($call_type) = $self->_get_params(@_); + die("invalid call type '$call_type'") unless length($call_type) == 3; + return $call_type . $TERMINATOR; } diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/FileSequenceNumber.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/FileSequenceNumber.pm new file mode 100644 index 0000000..d9701ee --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/FileSequenceNumber.pm @@ -0,0 +1,49 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::FileSequenceNumber; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Field qw($TERMINATOR); + +#use NGCP::BulkProcessor::Array qw(contains); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::Field); +our @EXPORT_OK = qw( + +); + +my $field_name = "file sequence number"; +my $length = 4; +my @param_names = qw/file_sequence_number/; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Field->new( + $class, + name => $field_name, + length => $length, + @_); + + return $self; + +} + +sub _get_param_names { + + my $self = shift; + return @param_names; + +} + +sub get_hex { + + my $self = shift; + my ($file_sequence_number) = $self->_get_params(@_); + die("invalid file sequence number '$file_sequence_number'") if ($file_sequence_number < 1 or $file_sequence_number > 999); + return sprintf('%03d',$file_sequence_number) . $TERMINATOR; + +} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/GenericIssue.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/GenericIssue.pm new file mode 100644 index 0000000..d872242 --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/GenericIssue.pm @@ -0,0 +1,54 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::GenericIssue; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Field qw($TERMINATOR); + +#use NGCP::BulkProcessor::Array qw(contains); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::Field); +our @EXPORT_OK = qw( + +); + +my $field_name = "generic issue"; +my $length = 6; +my @param_names = qw/generic_issue_number point_issue_level overwrite_level/; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Field->new( + $class, + name => $field_name, + length => $length, + @_); + $self->{generic_issue_number} //= 0; + $self->{point_issue_level} //= 0; + $self->{overwrite_level} //= 0; + + return $self; + +} + +sub _get_param_names { + + my $self = shift; + return @param_names; + +} + +sub get_hex { + + my $self = shift; + my ($generic_issue_number,$point_issue_level,$overwrite_level) = $self->_get_params(@_); + die("invalid generic issue number '$generic_issue_number'") if length($generic_issue_number) < 1 or length($generic_issue_number) > 2; + die("invalid point issue level '$point_issue_level'") if length($point_issue_level) < 1 or length($point_issue_level) > 2; + die("invalid overwrite level '$overwrite_level'") if length($overwrite_level) != 1; + return sprintf('%02d',$generic_issue_number) . sprintf('%02d',$point_issue_level) . $overwrite_level . $TERMINATOR; + +} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/RecordCount.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/RecordCount.pm new file mode 100644 index 0000000..a68f5df --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/RecordCount.pm @@ -0,0 +1,49 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordCount; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Field qw($TERMINATOR); + +#use NGCP::BulkProcessor::Array qw(contains); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::Field); +our @EXPORT_OK = qw( + +); + +my $field_name = "record count"; +my $length = 8; +my @param_names = qw/record_count/; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Field->new( + $class, + name => $field_name, + length => $length, + @_); + + return $self; + +} + +sub _get_param_names { + + my $self = shift; + return @param_names; + +} + +sub get_hex { + + my $self = shift; + my ($record_count) = $self->_get_params(@_); + die("invalid record count '$record_count'") if ($record_count < 0 or $record_count > 9999999); + return sprintf('%07d',$record_count) . $TERMINATOR; + +} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/ServiceFeature.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/ServiceFeature.pm index c75f4e8..fc0c44d 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/ServiceFeature.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/ServiceFeature.pm @@ -20,7 +20,7 @@ our @EXPORT_OK = qw( my $field_name = "service feature"; my $length = 4; -my @param_names = qw/service_feature_code/; +my @param_names = qw/service_feature/; our $OTHER = '000'; our $THREE_WAY = '010'; @@ -38,7 +38,7 @@ sub new { name => $field_name, length => $length, @_); - #$self->{service_feature_code} //= 0; + #$self->{service_feature} //= 0; return $self; @@ -54,9 +54,9 @@ sub _get_param_names { sub get_hex { my $self = shift; - my ($service_feature_code) = $self->_get_params(@_); - die("invalid service feature code '$service_feature_code'") unless length($service_feature_code) == 3; - return $service_feature_code . $TERMINATOR; + my ($service_feature) = $self->_get_params(@_); + die("invalid service feature '$service_feature'") unless length($service_feature) == 3; + return $service_feature . $TERMINATOR; } diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/TracerType.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/TracerType.pm new file mode 100644 index 0000000..e071bdb --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Fields/TracerType.pm @@ -0,0 +1,65 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Field qw($TERMINATOR); + +use NGCP::BulkProcessor::Array qw(contains); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::Field); +our @EXPORT_OK = qw( + $TRANSFER_IN + $TRANSFER_OUT + $AMATPS_PRIMARY + $AMATPS_SECONDARY + $DMS100F_HOURLY +); + +my $field_name = "tracer type"; +my $length = 4; +my @param_names = qw/tracer_type/; + +my @tracer_types = (); +our $TRANSFER_IN = '007'; +push(@tracer_types,$TRANSFER_IN); +our $TRANSFER_OUT = '008'; +push(@tracer_types,$TRANSFER_OUT); +our $AMATPS_PRIMARY = '032'; +push(@tracer_types,$AMATPS_PRIMARY); +our $AMATPS_SECONDARY = '033'; +push(@tracer_types,$AMATPS_SECONDARY); +our $DMS100F_HOURLY = '037'; +push(@tracer_types,$DMS100F_HOURLY); + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Field->new( + $class, + name => $field_name, + length => $length, + @_); + + return $self; + +} + +sub _get_param_names { + + my $self = shift; + return @param_names; + +} + +sub get_hex { + + my $self = shift; + my ($tracer_type) = $self->_get_params(@_); + die("invalid tracer type '$tracer_type'") unless contains($tracer_type,\@tracer_types); + return $tracer_type . $TERMINATOR; + +} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Record.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Record.pm index 629320e..1539c49 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Record.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Record.pm @@ -9,6 +9,8 @@ our @EXPORT_OK = qw( ); +my $record_descriptor_word_length = 8; + sub new { my $class = shift; @@ -35,7 +37,7 @@ sub get_hex { sub get_length { my $self = shift; - my $length = 8; #RDW + my $length = $record_descriptor_word_length; $length += $self->{structure}->get_length(@_); foreach my $module (@{$self->{modules}}) { next unless $module->get_enabled(@_); diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure0510.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure0510.pm index f6fd735..98565ef 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure0510.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure0510.pm @@ -7,7 +7,7 @@ use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::HexId qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::StructureCode qw($STRUCTURE_CODE_0510); -use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallTypeCode qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorId qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeType qw(); @@ -58,7 +58,7 @@ sub new { @_, ); $self->_add_field($self->{structure_code}); - $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallTypeCode->new( + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType->new( @_, )); $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType->new( diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9013.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9013.pm new file mode 100644 index 0000000..2eb8ed7 --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9013.pm @@ -0,0 +1,91 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9013; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure qw(); + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::HexId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::StructureCode qw($STRUCTURE_CODE_9013); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::GenericIssue qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::FileSequenceNumber qw(); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::FieldSet NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure); +our @EXPORT_OK = qw( + +); + +my $length = 64; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure->new( + $class, + length => $length, + #structure_name => $structure_name, + @_); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::HexId->new( + @_, + )); + $self->{structure_code} = NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::StructureCode->new( + structure_code => $STRUCTURE_CODE_9013, + @_, + ); + $self->_add_field($self->{structure_code}); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType->new( + call_type => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType::TRANSFER, + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorId->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeType->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeId->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::GenericIssue->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType->new( + tracer_type => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType::TRANSFER_IN, + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::FileSequenceNumber->new( + @_, + )); + + return $self; + +} + +sub get_structure_code_field { + my $self = shift; + return $self->{structure_code}; +} + +#sub get_instance { +# return +#} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9014.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9014.pm new file mode 100644 index 0000000..c54b236 --- /dev/null +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Structures/Structure9014.pm @@ -0,0 +1,99 @@ +package NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9014; +use strict; + +## no critic + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure qw(); + +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::HexId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::StructureCode qw($STRUCTURE_CODE_9014); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeId qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::GenericIssue qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::FileSequenceNumber qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordCount qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::BlockCount qw(); + +require Exporter; +our @ISA = qw(Exporter NGCP::BulkProcessor::Projects::Export::Ama::Format::FieldSet NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure); +our @EXPORT_OK = qw( + +); + +my $length = 78; + +sub new { + + my $class = shift; + my $self = NGCP::BulkProcessor::Projects::Export::Ama::Format::Structure->new( + $class, + length => $length, + #structure_name => $structure_name, + @_); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::HexId->new( + @_, + )); + $self->{structure_code} = NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::StructureCode->new( + structure_code => $STRUCTURE_CODE_9014, + @_, + ); + $self->_add_field($self->{structure_code}); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType->new( + call_type => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType::TRANSFER, + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorType->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SensorId->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeType->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordingOfficeId->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::GenericIssue->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType->new( + tracer_type => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::TracerType::TRANSFER_IN, + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::FileSequenceNumber->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::RecordCount->new( + @_, + )); + $self->_add_field(NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::BlockCount->new( + @_, + )); + + return $self; + +} + +sub get_structure_code_field { + my $self = shift; + return $self->{structure_code}; +} + +#sub get_instance { +# return +#} + +1; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.ama b/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.ama index f1715790a5a7a9cbd59b91a577287d606dc99eee..74882f7df8c47eb79eea98695573f96ce89cb083 100644 GIT binary patch delta 19 acmebGpCH57Gf`HPQz%lLhk=2K*#`hF1_PG> delta 19 acmebGpCH4iGf`HPQ_xX}hk=2K*#`h8+5;H? diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.pl b/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.pl index 9feb567..ecdb19a 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.pl +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/test.pl @@ -10,8 +10,10 @@ use NGCP::BulkProcessor::Calendar qw(current_local); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Record qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure0510 qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9013 qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9014 qw(); -use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallTypeCode qw(); +use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ServiceFeature qw(); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SignificantDigitsNextField qw(); @@ -24,9 +26,27 @@ my $source = "43011001"; my $destination = "43011002"; my $duration = 123.456; -my $test = NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( +my $transfer_in = NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( + NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9013->new( + + rewritten => 0, + sensor_id => '008708', # Graz + + padding => 0, + recording_office_id => '008708', + + date => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date::get_ama_date($dt), + + connect_time => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime::get_connect_time($dt), + + file_sequence_number => 1, + ) +); + +my @records = (); +push(@records,NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure0510->new( - call_type_code => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallTypeCode::STATION_PAID, + call_type => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::CallType::STATION_PAID, rewritten => 0, sensor_id => '008708', # Graz @@ -36,7 +56,7 @@ my $test = NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( date => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date::get_ama_date($dt), - service_feature_code => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ServiceFeature::OTHER, + service_feature => $NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ServiceFeature::OTHER, originating_significant_digits => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SignificantDigitsNextField::get_number_length($source), originating_open_digits_1 => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::SignificantDigitsNextField::get_number_digits_1($source), @@ -51,6 +71,25 @@ my $test = NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( connect_time => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime::get_connect_time($dt), elapsed_time => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ElapsedTime::get_elapsed_time($duration), ) +)); + +my $transfer_out = NGCP::BulkProcessor::Projects::Export::Ama::Format::Record->new( + NGCP::BulkProcessor::Projects::Export::Ama::Format::Structures::Structure9014->new( + + rewritten => 0, + sensor_id => '008708', # Graz + + padding => 0, + recording_office_id => '008708', + + date => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::Date::get_ama_date($dt), + + connect_time => NGCP::BulkProcessor::Projects::Export::Ama::Format::Fields::ConnectTime::get_connect_time($dt), + + file_sequence_number => 1, + + => (scalar @records), + ) ); print $test->{structure}->to_string()."\n"; @@ -64,5 +103,3 @@ if (open(my $fh,">:raw",'test.ama')) { } else { #fileerror("failed to open $self->{crt_path}: $!",getlogger(__PACKAGE__)); } - -