| Win32-SqlServer-DTS documentation | Contained in the Win32-SqlServer-DTS distribution. |
perldoc.perldoc.perldoc.Win32::SqlServer::DTS::Assignment - a Perl base class to represent a DTS Dynamic Properties task Assignment object
package Win32::SqlServer::DTS::Assignment::SomethingWeird; use base (Win32::SqlServer::DTS::Assignment); #and goes on defining the child class
Win32::SqlServer::DTS::Assignment is a base class that should be inherited by a specialized class that defines one type of
Assignment object that is part of a DTS Dynamic Property task.
This class defines some common attributes that a subclass of Win32::SqlServer::DTS::Assignment. Some methods must be override too,
and are explained in the next sections.
None by default.
Instantiates a new Win32::SqlServer::DTS::Assigment object. Expects as parameter a DynamicPropertiesTaskAssignment object.
Unless you want to extend the Win32::SqlServer::DTS::Assignment class, you will want to fetch Win32::SqlServer::DTS::Assignment objects using
the get_properties method from Win32::SqlServer::DTS::Task::DynamicProperty class.
Returns the type as a numeric code for a instantied object of a subclass of Win32::SqlServer::DTS::Assignment.
Returns a type as a string converted from the original numeric code using Win32::SqlServer::DTS::AssignmentTypes (Win32::SqlServer::DTS::AssignmentTypes) abstract class to make the convertion.
This method should be override by any subclass of Win32::SqlServer::DTS::Assignment. If invoked but not overrided, it will abort
program execution with an error message.
Returns a Win32::SqlServer::DTS::Assignment::Destination object. See Win32::SqlServer::DTS::Assignment::Destination for more details about how
to use Destination objects.
A Win32::SqlServer::DTS::Assignment::Destination object is not part of the official MS SQL Server DTS API, but is easier to use and
do not use Win32::OLE directly (so there are no great performance penalties).
Sets the Destination string in the assignment (in other words, it writes directly in the DTS package). To be able to
invoke this method, the Win32::SqlServer::DTS::Assignment should not have invoke the kill_sibling method before, since writing
the DTS package requires having the _sibling attribute defined.
The method will check such condition and will abort program execution in such cases.
Once the string is modified successfully in the package, the Win32::SqlServer::DTS::Assignment::Destination will be modified as well
(a new instance will be created).
Returns all properties from an assignment object as a hash reference, having the following keys:
Since the method get_source must be overrided by subclasses of Win32::SqlServer::DTS::Assignment, get_properties will fail unless invoked
thru one of those subclasses.
Returns a string with the type, source and destination of an assignment. Useful for debugging or reporting.
perldoc.perldoc.perldoc.Alceu Rodrigues de Freitas Junior, <arfreitas@cpan.org>
Copyright (C) 2006 by Alceu Rodrigues de Freitas Junior
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
| Win32-SqlServer-DTS documentation | Contained in the Win32-SqlServer-DTS distribution. |
package Win32::SqlServer::DTS::Assignment;
use 5.008008; use strict; use warnings; use base qw(Win32::SqlServer::DTS); use Carp qw(confess); use Win32::SqlServer::DTS::AssignmentTypes; use Win32::SqlServer::DTS::Assignment::DestinationFactory; our $VERSION = '0.03';
sub new { my $class = shift; my $self = { _sibling => shift }; bless $self, $class; my $sibling = $self->get_sibling(); $self->{destination} = Win32::SqlServer::DTS::Assignment::DestinationFactory->create( $sibling->{DestinationPropertyID} ); # subscribing to the event of changing the destination string in the # Win32::SqlServer::DTS::Assignment::Destination object $self->{destination} ->add_subscriber( 'changed', sub { $self->_set_destination() } ); $self->{typename} = Win32::SqlServer::DTS::AssignmentTypes->get_class_name( $sibling->SourceType() ); $self->{type} = $sibling->SourceType(); return $self; }
sub get_type { my $self = shift; return $self->{type}; }
sub get_type_name { my $self = shift; return $self->{typename}; }
sub get_source { confess "This method should be override by an specialized subclass of Win32::SqlServer::DTS::Assignment\n"; }
sub get_destination { my $self = shift; return $self->{destination}; }
sub set_destination { my $self = shift; my $new_string = shift; # modifying both attributes. set_string does some validation, # so it's being called first $self->{destination}->set_string($new_string); confess "The new string cannot be undefined" unless ( defined($new_string) ); $self->get_sibling()->DestinationPropertyID = $new_string; } # destination object is already updated, fetching the # string value from the object sub _set_destination { my $self = shift; $self->get_sibling()->DestinationPropertyID() = $self->{destination}->get_raw_string(); }
sub get_properties { my $self = shift; return { type => $self->get_type(), source => scalar( $self->get_source() ), destination => scalar( $self->get_destination() ) } }
sub to_string { my $self = shift; return $self->get_type_name . " assignment\n" . 'Source: ' . $self->get_source . "\n" . 'Destination: ' . $self->get_destination . "\n"; } 1; __END__