VSGDR-StaticData

 view release on metacpan or  search on metacpan

lib/VSGDR/StaticData.pm  view on Meta::CPAN

    my $flatExtractColumnList   = "" ;

    foreach my $l (@{$ra_columns}) {
        my $varlen      = length($l->[0]) ;
        my $colpadding  = $widest_column_name_padding - (int(($varlen)/4));
        my $varpadding  = $widest_column_name_padding - (int(($varlen+1)/4));
        do { local $" = "";   $flatExtractColumnList    .= $l->[1] =~ m{\A(?:date|datetime[2]?|smalldatetime)\z}i  ? "convert(varchar(30),[$l->[0]],120)" :  "[$l->[0]]" ; $flatExtractColumnList .= ", "} ;

    }

    $flatExtractColumnList    =~ s{ ,\s? \z }{}msx;

#warn Dumper $flatExtractColumnList;
#warn Dumper $ra_columns;

    my $ra_metadata = describeTestDataForTable($dbh,$sql,$ra_columns);
    my @cols = map { $$_[0] } @$ra_metadata ;

    my $ra_data     = getTestDataForTable($dbh,$quotedCombinedName,\@cols,$sql);

#warn Dumper $ra_data;    
#warn Dumper $$ra_data[0];    
#warn Dumper @cols;
#warn Dumper @$ra_metadata;
   
    my @useColumnValues   = ();

    #look over data and try to find the slices which are empty
    if ($use_IgnoreNulls) {
        @useColumnValues   = map { 0 } @$ra_metadata ;
        foreach my $ra_row (@{$ra_data}){
            for ( my $i = 0; $i < scalar @{$ra_row}; $i++ ) {
                if ( ( defined ($ra_row->[$i]) ) ) {
                    $useColumnValues[$i] = 1 ;
                }
            }
        }
    }
    else {
        @useColumnValues   = map { 1 } @$ra_metadata ;
    }

    my $colList = "" ;#do { local $" = "," ; "@cols" } ;

    my $i =0;
    foreach my $c (@cols)
    {
        if ($useColumnValues[$i]) {
            if ( ! scalar($colList) ) {
                $colList = "${c}"
            }
            else {
                $colList .= ",${c}"
            }
        }
        $i++;
    }

#warn Dumper $colList;
#exit;
    #need to overlay tables with columns apart from those which are 'hidden'
    my @valuesTable     ;
    my $valuesClause    = "values\n\t\t\t";

    my $lno             = 1;
    foreach my $ra_row (@{$ra_data}){
        my @outVals = undef ;
        for ( my $i = 0; $i < scalar @{$ra_row}; $i++ ) {
            if ($useColumnValues[$i]) {
            if ( not ( defined ($ra_row->[$i]) ) ) {
                $outVals[$i] = 'null' ;
            }
            else {
                if (${$ra_metadata}[$i][1] =~ m{\A(?:date|datetime[2]?|smalldatetime)\z}i) {
                    $outVals[$i] = "convert(". ${$ra_columns}[$i][1] ."," . $dbh->quote($ra_row->[$i]) . ",120)"   ;
                }
                elsif ( ${$ra_metadata}[$i][1] =~ m{(?:uniqueidentifier|char|text|date)}i)  {
                    $outVals[$i] = $dbh->quote($ra_row->[$i])  ;
                }
                else {
                    $outVals[$i] = $ra_row->[$i] ;
                }
            }
            }
        }
        push @valuesTable, \@outVals ;
        #my $line = do{ local $" = ", "; "@outVals" } ;
        $lno++;
    }

    my @maxWidth;
    my $maxCol;

    if ( scalar @valuesTable ) {
        my @tmp = @{$valuesTable[0]};
        $maxCol = scalar @tmp -1 ;
        for ( my $i = 0; $i <= $maxCol; $i++ ) {
            push @maxWidth, 0;
        }
        for ( my $i = 0; $i < scalar @valuesTable; $i++ ) {
            my @tmp = @{$valuesTable[$i]};
            for ( my $i = 0; $i <= $maxCol; $i++ ) {
                if ($useColumnValues[$i]) {
                if (length($tmp[$i]) > $maxWidth[$i] ) {
                    $maxWidth[$i] = length($tmp[$i]) ;
                }
                }
            }
        }
    }

    #warn Dumper @maxWidth ;

    for ( my $i = 0; $i < scalar @valuesTable; $i++ ) {
        my @tmp             = @{$valuesTable[$i]};
        my $line            = "";
        for ( my $j = 0; $j <= $maxCol; $j++ ) {
            if ($useColumnValues[$j]) {

            my $val         = $tmp[$j];
            my $valWidth    = length($val);



( run in 1.177 second using v1.01-cache-2.11-cpan-39bf76dae61 )