BPM-Engine

 view release on metacpan or  search on metacpan

lib/BPM/Engine/Store/ResultSet/Package.pm  view on Meta::CPAN

package BPM::Engine::Store::ResultSet::Package;
BEGIN {
    $BPM::Engine::Store::ResultSet::Package::VERSION   = '0.01';
    $BPM::Engine::Store::ResultSet::Package::AUTHORITY = 'cpan:SITETECH';    
    }

use namespace::autoclean;
use Moose;
use MooseX::NonMoose;
use Scalar::Util qw/blessed/;
use BPM::Engine::Util::XPDL ':all';
use BPM::Engine::Exceptions qw/throw_model throw_store/;
extends 'DBIx::Class::ResultSet';

my %APPMAP = ();

sub debug {
    #my @caller = caller(0); warn $_[0] . ' at line ' . $caller[2] . "\n";
    }

sub create_from_xml {
    my ($self, $arg) = @_;

    $arg = xml_hash($arg) unless(ref($arg) eq 'HASH');
    
    return $self->_create_from_hash($arg);
    }

sub create_from_xpdl {
    my ($self, $arg) = @_;

    $arg = xpdl_hash($arg) unless(ref($arg) eq 'HASH');
    
    return $self->_create_from_hash($arg);
    }

sub _create_from_hash {
    my ($self, $args) = @_;

    %APPMAP = ();
    my $schema = $self->result_source->schema;
    
    my $create_txn = sub {
        #-- main element: Package
        my $entry = $self->create( {
            package_uid => $args->{Id},
            version     => '1.0',
            });
        $entry->package_name($args->{Name}) if($args->{Name});

        #-- element: PackageHeader (required)
        _import_packhead($entry, $args->{PackageHeader}) 
            if $args->{PackageHeader};

        #-- element: RedefinableHeader
        _import_redefhead($entry, $args->{RedefinableHeader})
            if $args->{RedefinableHeader};

        #-- element: ConformanceClass
        $entry->graph_conformance($args->{ConformanceClass}->{GraphConformance}) 
            if ($args->{ConformanceClass});

        #-- element: Script
        #-- element: ExternalPackages
        #-- element: TypeDeclarations

        #-- element: Participants
        _import_participants($entry, $args->{Participants}->{Participant}) 
            if $args->{Participants};

        #-- element: Applications
        _import_applications($entry, $args->{Applications}->{Application}) 
            if $args->{Applications};

        #-- elements: DataFields, ExtendedAttributes, Formal/ActualParameters
        if($args->{Artifacts} && $args->{Artifacts}->{seq_Artifact}) {
            $args->{Artifacts}->{Artifact} = [
                map { $_->{Artifact} } 



( run in 0.579 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )