Win32::SqlServer::DTS::Assignment::DestinationFactory - abstract class to generate Win32::SqlServer::DTS::Assignment::Destination subclasses depending on


Win32-SqlServer-DTS documentation Contained in the Win32-SqlServer-DTS distribution.

Index


Code Index:

NAME

Top

Win32::SqlServer::DTS::Assignment::DestinationFactory - abstract class to generate Win32::SqlServer::DTS::Assignment::Destination subclasses depending on the Destination string.

SYNOPSIS

Top

sub get_destination {

    my $self = shift;

    return Win32::SqlServer::DTS::Assignment::DestinationFactory->create( $self->{destination} );

}

DESCRIPTION

Top

Win32::SqlServer::DTS::Assignment::DestinationFactory instantiates and return new Win32::SqlServer::DTS::Assigment::Destination subclasses depending on the Destination string passed as a reference.

EXPORT

Nothing.

METHODS

create

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.

SEE ALSO

Top

* Win32::SqlServer::DTS::Assignment::Destination at perldoc, as well it's subclasses.
* MSDN on Microsoft website and MS SQL Server 2000 Books Online are a reference about using DTS' object hierarchy, but one will need to convert examples written in VBScript to Perl code.

AUTHOR

Top

Alceu Rodrigues de Freitas Junior, <arfreitas@cpan.org>

COPYRIGHT AND LICENSE

Top


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__