Skip to content

Commit

Permalink
correct some typo
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaoyafeng committed Aug 12, 2011
1 parent ef63047 commit b8d2628
Show file tree
Hide file tree
Showing 12 changed files with 284 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Build
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ sub magic_number_matches {
open FH, '_build\\magicnum' or return 0;
my $filenum = <FH>;
close FH;
return $filenum == 206756;
return $filenum == 593292;
}

my $progname;
Expand Down
2 changes: 1 addition & 1 deletion Build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ sub magic_number_matches {
open FH, '_build\\magicnum' or return 0;
my $filenum = <FH>;
close FH;
return $filenum == 206756;
return $filenum == 593292;
}

my $progname;
Expand Down
1 change: 0 additions & 1 deletion MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ t/00-load.t
t/01-func.t
t/boilerplate.t
t/manifest.t
t/pod-coverage.t
t/pod.t
12 changes: 12 additions & 0 deletions MANIFEST~
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Build.PL
Changes
ignore.txt
lib/C3000.pm
MANIFEST This list of files
README
t/00-load.t
t/01-func.t
t/boilerplate.t
t/manifest.t
t/pod-coverage.t
t/pod.t
2 changes: 1 addition & 1 deletion MYMETA.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
abstract: ~
abstract: "A perl wrap for C3000 API\n\tThis is a simple wrap of C3000 API. For more details, please refer to: \n\tmeter2cash CONVERGE Business Objects Component Interfaces User Guide"
author:
- 'Andy Xiao <[email protected]>'
build_requires:
Expand Down
2 changes: 1 addition & 1 deletion _build/magicnum
Original file line number Diff line number Diff line change
@@ -1 +1 @@
206756
593292
63 changes: 61 additions & 2 deletions blib/lib/C3000.pm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ use Carp;
use Encode;
use DateTime;
use DateTime::Format::Natural;
use DBI;
Readonly::Scalar my $DEBUG => 0;
use constant cnNoFlags => 0;
use constant cnNoCheckpoint => 0;


=head1 NAME
Expand Down Expand Up @@ -45,9 +49,10 @@ my $Empty;

sub new {
my $this = shift;



#init start
#my $dbh = DBI->connect("dbi:ADO:Provider=OraOLEDB.Oracle;Data Source=athenaDB;", 'athena', 'athena', ) or croak $DBI::errstr;

my $container_manager = Win32::OLE->new('Athena.CT.ContainerManager.1');
my $active_element_manager =
Win32::OLE->new('Athena.CT.ActiveElementManager.1');
Expand All @@ -72,6 +77,7 @@ sub new {


my $self = {
#dbh => $dbh,
MeterDataInterface => $meter_data_interface,
ContainerManager => $container_manager,
ContainerTemplateManager => $container_template_manager,
Expand Down Expand Up @@ -279,11 +285,64 @@ sub convert_VT_DATE {
time_zone => 'Asia/Taipei',
);
my $date_string = shift;
return Variant( VT_DATE, $EPOCH + $date_string->epoch / $SEC_PER_DAY ) if ref($date_string) eq 'DateTime';
my $dt = $parser->parse_datetime($date_string);
$dt->set_time_zone('UTC');
return Variant( VT_DATE, $EPOCH + $dt->epoch / $SEC_PER_DAY );
}



sub CreateMasterAccount {
my ($self, $pnParentContainerID, $pnTemplateID, $pnDataSegmentID, $paValues) = @_;

my $nContainerID;
my $rsInitValues;
my @arrayRf;
for my $nIndex (0 .. $#$paValues){
$arrayRf[ $nIndex ] = $paValues->[ $nIndex ][0];
}
$rsInitValues = $self->{ 'ContainerTemplateManager' }->GetValues($pnTemplateID, \@arrayRf, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
for my $nIndex (0 .. $#$paValues){
$rsInitValues->Fields($paValues->[ $nIndex ][0])->{'Value'} = $paValues->[ $nIndex ][1];
}
$nContainerID = $self->{ 'ContainerManager' }->CreateContainer($pnTemplateID, $self->{ 'ContainerManager' }->GetTopNodeID( cnNoCheckpoint, $self->{ 'UserSessions' }), $rsInitValues, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->MoveContainer($nContainerID, $pnParentContainerID, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->setDataSegment($nContainerID, $pnDataSegmentID, $self->{ 'UserSessions' });
return $nContainerID;
}

sub GetContainerID {
my $self = shift;
my $paCriteria = shift;
my $rs;
$rs = $self->{ 'ContainerManager' }->Search(['ContainerID'], $paCriteria, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rs->Fields('ContainerID')->{'Value'};
}

sub GetDataSegmentID {
my $self = shift;
my $psDataSegmentName = shift;
my $rs;
$rs = $self->{ 'DataSegment' }->GetDataSegmentInfo($self->{ 'UserSessions' }->GetInstallationID(), ['DataSegNb'], [['DataSegName', $psDataSegmentName]]);
return $rs->Fields('DataSegNb')->{'Value'};

}

sub GetTemplateID {
my $self = shift;
my $psTemplatename = shift;
my ($arrayRf, $arrayCr);
my $rsTemplate;
$arrayRf = ['ContainerTemplateID'];
$arrayCr = [['ContainerTemplateName', $psTemplatename]];
$rsTemplate = $self->{ 'ContainerTemplateManager' }->Search($arrayRf, $arrayCr, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rsTemplate->Fields('ContainerTemplateID')->{'Value'};


}


=head1 AUTHOR
Andy Xiao, C<< <xyf.gmail.com> >>
Expand Down
63 changes: 61 additions & 2 deletions lib/C3000.pm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ use Carp;
use Encode;
use DateTime;
use DateTime::Format::Natural;
use DBI;
Readonly::Scalar my $DEBUG => 0;
use constant cnNoFlags => 0;
use constant cnNoCheckpoint => 0;


=head1 NAME
Expand Down Expand Up @@ -45,9 +49,10 @@ my $Empty;

sub new {
my $this = shift;



#init start
#my $dbh = DBI->connect("dbi:ADO:Provider=OraOLEDB.Oracle;Data Source=athenaDB;", 'athena', 'athena', ) or croak $DBI::errstr;

my $container_manager = Win32::OLE->new('Athena.CT.ContainerManager.1');
my $active_element_manager =
Win32::OLE->new('Athena.CT.ActiveElementManager.1');
Expand All @@ -72,6 +77,7 @@ sub new {


my $self = {
#dbh => $dbh,
MeterDataInterface => $meter_data_interface,
ContainerManager => $container_manager,
ContainerTemplateManager => $container_template_manager,
Expand Down Expand Up @@ -279,11 +285,64 @@ sub convert_VT_DATE {
time_zone => 'Asia/Taipei',
);
my $date_string = shift;
return Variant( VT_DATE, $EPOCH + $date_string->epoch / $SEC_PER_DAY ) if ref($date_string) eq 'DateTime';
my $dt = $parser->parse_datetime($date_string);
$dt->set_time_zone('UTC');
return Variant( VT_DATE, $EPOCH + $dt->epoch / $SEC_PER_DAY );
}



sub CreateMasterAccount {
my ($self, $pnParentContainerID, $pnTemplateID, $pnDataSegmentID, $paValues) = @_;

my $nContainerID;
my $rsInitValues;
my @arrayRf;
for my $nIndex (0 .. $#$paValues){
$arrayRf[ $nIndex ] = $paValues->[ $nIndex ][0];
}
$rsInitValues = $self->{ 'ContainerTemplateManager' }->GetValues($pnTemplateID, \@arrayRf, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
for my $nIndex (0 .. $#$paValues){
$rsInitValues->Fields($paValues->[ $nIndex ][0])->{'Value'} = $paValues->[ $nIndex ][1];
}
$nContainerID = $self->{ 'ContainerManager' }->CreateContainer($pnTemplateID, $self->{ 'ContainerManager' }->GetTopNodeID( cnNoCheckpoint, $self->{ 'UserSessions' }), $rsInitValues, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->MoveContainer($nContainerID, $pnParentContainerID, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->setDataSegment($nContainerID, $pnDataSegmentID, $self->{ 'UserSessions' });
return $nContainerID;
}

sub GetContainerID {
my $self = shift;
my $paCriteria = shift;
my $rs;
$rs = $self->{ 'ContainerManager' }->Search(['ContainerID'], $paCriteria, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rs->Fields('ContainerID')->{'Value'};
}

sub GetDataSegmentID {
my $self = shift;
my $psDataSegmentName = shift;
my $rs;
$rs = $self->{ 'DataSegment' }->GetDataSegmentInfo($self->{ 'UserSessions' }->GetInstallationID(), ['DataSegNb'], [['DataSegName', $psDataSegmentName]]);
return $rs->Fields('DataSegNb')->{'Value'};

}

sub GetTemplateID {
my $self = shift;
my $psTemplatename = shift;
my ($arrayRf, $arrayCr);
my $rsTemplate;
$arrayRf = ['ContainerTemplateID'];
$arrayCr = [['ContainerTemplateName', $psTemplatename]];
$rsTemplate = $self->{ 'ContainerTemplateManager' }->Search($arrayRf, $arrayCr, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rsTemplate->Fields('ContainerTemplateID')->{'Value'};


}


=head1 AUTHOR
Andy Xiao, C<< <xyf.gmail.com> >>
Expand Down
67 changes: 63 additions & 4 deletions lib/C3000.pm~
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ use Carp;
use Encode;
use DateTime;
use DateTime::Format::Natural;
use DBI;
Readonly::Scalar my $DEBUG => 0;
use constant cnNoFlags => 0;
use constant cnNoCheckpoint => 0;


=head1 NAME

Expand Down Expand Up @@ -45,15 +49,16 @@ my $Empty;

sub new {
my $this = shift;



#init start
#my $dbh = DBI->connect("dbi:ADO:Provider=OraOLEDB.Oracle;Data Source=athenaDB;", 'athena', 'athena', ) or croak $DBI::errstr;

my $container_manager = Win32::OLE->new('Athena.CT.ContainerManager.1');
my $active_element_manager =
Win32::OLE->new('Athena.CT.ActiveElementManager.1');
my $active_element_template_manager =
Win32::OLE->new('Athena.CT.ActiveElementTemplateManager.1');
my $security_token = Win32::OLE->new('AthenaSecurity.UserSessions.1');
my $security_token = Win32::OLE->new('AthenaSeurity.UserSessions.1');
$security_token->ConvergeLogin( 'Administrator', 'Athena', 0, 666 );
my $adas_instance_manager =
Win32::OLE->new('Athena.AS.ADASInstanceManager.1')
Expand All @@ -64,14 +69,15 @@ sub new {
my $container_template_manager =
Win32::OLE->new('Athena.CT.ContainerTemplateManager.1')
or croak;
my $data_segment_helper = Win32::OLE->new('AthenaSecurity.DataSegment.1')
my $data_segment_helper = Win32::OLE->new('AthenaSeurity.DataSegment.1')
or croak;
my $meter_data_interface =
Win32::OLE->new('DeviceAndMeterdata.ADASDeviceAndMeterdata.1');
#init end


my $self = {
#dbh => $dbh,
MeterDataInterface => $meter_data_interface,
ContainerManager => $container_manager,
ContainerTemplateManager => $container_template_manager,
Expand Down Expand Up @@ -279,11 +285,64 @@ sub convert_VT_DATE {
time_zone => 'Asia/Taipei',
);
my $date_string = shift;
return Variant( VT_DATE, $EPOCH + $date_string->epoch / $SEC_PER_DAY ) if ref($date_string) eq 'DateTime';
my $dt = $parser->parse_datetime($date_string);
$dt->set_time_zone('UTC');
return Variant( VT_DATE, $EPOCH + $dt->epoch / $SEC_PER_DAY );
}



sub CreateMasterAccount {
my ($self, $pnParentContainerID, $pnTemplateID, $pnDataSegmentID, $paValues) = @_;

my $nContainerID;
my $rsInitValues;
my @arrayRf;
for my $nIndex (0 .. $#$paValues){
$arrayRf[ $nIndex ] = $paValues->[ $nIndex ][0];
}
$rsInitValues = $self->{ 'ContainerTemplateManager' }->GetValues($pnTemplateID, \@arrayRf, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
for my $nIndex (0 .. $#$paValues){
$rsInitValues->Fields($paValues->[ $nIndex ][0])->{'Value'} = $paValues->[ $nIndex ][1];
}
$nContainerID = $self->{ 'ContainerManager' }->CreateContainer($pnTemplateID, $self->{ 'ContainerManager' }->GetTopNodeID( cnNoCheckpoint, $self->{ 'UserSessions' }), $rsInitValues, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->MoveContainer($nContainerID, $pnParentContainerID, $self->{ 'UserSessions' });
$self->{ 'ContainerManager' }->setDataSegment($nContainerID, $pnDataSegmentID, $self->{ 'UserSessions' });
return $nContainerID;
}

sub GetContainerID {
my $self = shift;
my $paCriteria = shift;
my $rs;
$rs = $self->{ 'ContainerManager' }->Search(['ContainerID'], $paCriteria, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rs->Fields('ContainerID')->{'Value'};
}

sub GetDataSegmentID {
my $self = shift;
my $psDataSegmentName = shift;
my $rs;
$rs = $self->{ 'DataSegment' }->GetDataSegmentInfo($self->{ 'UserSessions' }->GetInstallationID(), ['DataSegNb'], [['DataSegName', $psDataSegmentName]]);
return $rs->Fields('DataSegNb')->{'Value'};

}

sub GetTemplateID {
my $self = shift;
my $psTemplatename = shift;
my ($arrayRf, $arrayCr);
my $rsTemplate;
$arrayRf = ['ContainerTemplateID'];
$arrayCr = [['ContainerTemplateName', $psTemplatename]];
$rsTemplate = $self->{ 'ContainerTemplateManager' }->Search($arrayRf, $arrayCr, $Empty, cnNoFlags, cnNoCheckpoint, $self->{ 'UserSessions' });
return $rsTemplate->Fields('ContainerTemplateID')->{'Value'};


}


=head1 AUTHOR

Andy Xiao, C<< <xyf.gmail.com> >>
Expand Down
14 changes: 13 additions & 1 deletion t/01-func.t
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!perl -T
use C3000;
use Test::More;

use DateTime;
my $hl = C3000->new();

my $meter = '%';
Expand All @@ -12,6 +12,10 @@ my $rs_device;
my $rs_LP;
ok($rs_device = $hl->search_device($return_fields, $criteria), "search_device test");

my $dt = DateTime->now();
is(ref($hl->convert_VT_DATE($dt)), 'Win32::OLE::Variant', 'convert VT_DATE');
is(ref($hl->convert_VT_DATE('today')), 'Win32::OLE::Variant', 'convert VT_DATE');

$return_fields = [ 'ADAS_TIME_GMT', 'ADAS_VAL_RAW', 'ADAS_USER_STATUS'];
my $device_id = $rs_device->Fields('ADAS_DEVICE')->{Value};
my $variable_id = $rs_device->Fields('ADAS_VARIABLE')->{Value};
Expand All @@ -24,6 +28,14 @@ ok($rs_LP = $hl->get_LP($return_fields, $criteria), "get load profile");
ok(defined($hl->accu_LP('ADAS_VAL_RAW', 'º£%', '+A', 'yesterday', 'today')), "get accumulation");
ok(defined($hl->get_single_LP('ADAS_VAL_RAW', 'º£%', '+A', 'yesterday')), "get single value");

my $
ok(defined($hl->create_meter()), "create meter");
ok(defined($hl->create_virtual_meter()), "create meter");
ok(defined($hl->del_meter()), "del meter");
ok(defined($hl->del_virtual_meter()), "del virtual meter");

my $init_value = [["accountnumber", $master], ['enabled', '1']]; # you can add more initial values, please check concerned template.
ok(defined($hl->create_master_account($parent_node, $template_id, $segment_id, $init_value)), "create master account");



Expand Down
Loading

0 comments on commit b8d2628

Please sign in to comment.