| Win32-SqlServer-DTS documentation | Contained in the Win32-SqlServer-DTS distribution. |
Win32::SqlServer::DTS::Assignment::DestinationFactory - abstract class to generate Win32::SqlServer::DTS::Assignment::Destination subclasses depending on the Destination string.
sub get_destination {
my $self = shift;
return Win32::SqlServer::DTS::Assignment::DestinationFactory->create( $self->{destination} );
}
Win32::SqlServer::DTS::Assignment::DestinationFactory instantiates and return new Win32::SqlServer::DTS::Assigment::Destination subclasses
depending on the Destination string passed as a reference.
Nothing.
Expects a destination string as a parameter. Such string is usually obtained from the destination attribute in a
Win32::SqlServer::DTS::Assignment object. Considering that there is no method to invoke such attribute value directly (although one
could use the method get_properties to fetch that), such use is recomended to be left only internally by a
Win32::SqlServer::DTS::Assignment object.
Returns a Win32::SqlServer::DTS::Assignment::Destination subclass depending on the string passed as a parameter. If it fails to
identify the subclass, it generates a warning and returns undef.
perldoc, as well it's subclasses.Alceu Rodrigues de Freitas Junior, <arfreitas@cpan.org>
Copyright (C) 2007 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::DestinationFactory;
use 5.008008; use strict; use warnings; use Carp qw(cluck confess); our $VERSION = '0.01';
sub create { my $dest_string = $_[1]; confess "Must received a valid destination string as a parameter\n" unless ( defined($dest_string) ); my $original_string = $dest_string; $dest_string =~ tr/'//d; my $value = ( split( /;/, $dest_string ) )[0]; my $type; CASE: { if ( $value eq 'Global Variables' ) { $type = 'GlobalVar'; last CASE; } if ( $value eq 'Properties' ) { $type = 'Package'; last CASE; } if ( $value eq 'Tasks' ) { $type = 'Task'; last CASE; } if ( $value eq 'Connections' ) { $type = 'Connection'; last CASE; } if ( $value eq 'Steps' ) { $type = 'Step'; last CASE; } else { cluck "Cannot identify the type of '$original_string'\n"; } } if ( defined($type) ) { # :WORKAROUND:3/10/2007:ARFJr: using DOS directory separator, but this API will # only work in Microsoft OS's anyway my $location = 'Win32\\SqlServer\\DTS\\Assignment\\Destination\\' . $type . '.pm'; my $new_class = 'Win32::SqlServer::DTS::Assignment::Destination::' . $type; require $location; return $new_class->new($original_string); } # cannot identify to which Destination type the string is part of else { return undef; } } 1; __END__