
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/ObjProcess.pm |
package DivBasicF::ObjProcess;
use strict;
use DivBasicF::ObjTask;
use Data::Dumper;
use vars qw($AUTOLOAD);
#******************************************************************
sub new {
my $class = shift;
my $self = {};
$self->{'PARENT'} = DivBasicF::ObjTask->new();
bless($self,$class);
return($self);
}
#******************************************************************
sub init_db { 1; }
sub init_idx { return("package,pkgstart,pkgend,program,syntax"); }
#******************************************************************
sub IDX {
my $self = shift;
$self->{'pkgstart'} = $self->{'package'} . "::";
$self->{'pkgend'} = $self->{'package'} . "::zzzz";
my $o1; my $o = "";
eval("\$o = \{ " . $self->{'program'} . " \}\;\n");
$self->{'syntax'} = $@;
if ($o) {
foreach $o1 (split(/,/,$self->init_idx())) {
next if (!($self->{lc($o1)}));
$self->{lc($o1)} = $self->{lc($o1)};
}
}
return($self->{'package'});
}
#******************************************************************
# sub REVERSE_IDX { 1; }
#******************************************************************
sub sleep {
my $self = shift;
my $time = shift;
my $func = shift || $self->goto_next_function();
if ($time == -1 or $time =~ /^max/i) {
$time = $self->{'PARENT'}->max_time();
$self->{'result'} = 9901;
$self->{'remark'} = "REQUEST";
} else {
if ($time < -1) {
$time = - $time;
} else {
$time = $time + time();
}
$self->{'result'} = 9902;
$self->{'remark'} = $time;
}
my $o; my $o1; my @ee; my $dbh; my $cursor; my $nr;
if (!($self->{'package'})) {
$dbh = $self->{'PARENT'}->dbh();
$o = ref($self);
$cursor = $dbh->prepare("select package from " .
$self->{'PARENT'}->tblstore() .
" where package like '$o\%'");
$nr = 0;
$cursor->execute();
while (0 == 0) {
@ee = $cursor->fetchrow();
last if (!@ee);
next if ($ee[0] !~ /^$o\:\:(\d+)$/);
$o1 = $1;
next if ($o1 < $nr);
$nr = $o1;
}
$cursor->finish();
$self->{'package'} = ref($self) . "::" . sprintf("%03u",$nr+1);
}
# if ($time) {
$o = $self->{'PARENT'}->msg([$func,@_],$time);
return( $self->{'PARENT'}->push( $self,$o ) );
# }
# $self->$func(@_);
}
#******************************************************************
sub goto_next_function {
my $self = shift;
my $func; my $jump;
my %list_of_functions = eval("\%".ref($self)."::");
$list_of_functions{'run'} = 1;
my $tlist = [];
foreach $func (sort {
$a =~ /^(.*?)(0*)(\d*)$/; my $a1 = $3;
$b =~ /^(.*?)(0*)(\d*)$/; my $b1 = $3;
$a1 <=> $b1 } keys %list_of_functions) {
next if ($func !~ /^(r|run|t|test)(\d*)$/);
$jump = $func;
last if (!($self->{'___JUMP___'}));
if ($self->{'___JUMP___'} eq $func) {
delete ($self->{'___JUMP___'});
}
}
$self->{'___JUMP___'} = $jump;
if (!$jump) {
$func = "ERROR: No function found in " . ref($self) .
"::get_next_function\n";
print STDERR $jump;
} else {
print STDERR "Jump to: $jump\n";
}
return($jump);
}
#******************************************************************
sub xxrequest {
my $self = shift;
my $func = $self->{'program'};
my $o = eval($func);
if (ref($o)) {
$func = shift(@$o);
$self->$func(@$o);
print STDERR Dumper($self->{'program'});
} else {
$self->{'program'} = $@ . "\n" . $self->{'program'};
$self->sleep(-1,"request");
}
}
#******************************************************************
sub xxformular {
my $self = shift;
my $text = shift;
return(0) if (!($self->{'package'}));
$self->{'program'} = <<'TEXXT_ENDE';
package ---PACKAGE---;
# _REQUEST_
sub formular { return(<<'TEXT_ENDE'); } 1;
---TEXT---
Text_ENDE
TEXXT_ENDE
my $o = $self->{'package'};
$self->{'program'} =~ s/---PACKAGE---/$o/;
$self->{'program'} =~ s/---TEXT---/$text/;
}
#*******************************************************
sub info {
my $self = shift;
my $cursor = shift;
my $package = shift || $self->{'package'};
my $level = $package;
$level =~ s/[^\:]//g;
$level = sprintf("%03u",1+length($level)/2);
my $store = $self->{'PARENT'}->tblstore();
my $conn = $self->{'PARENT'}->tblconn();
my $dbh = $self->{'PARENT'}->dbh();
$cursor =~ s/---PACKAGE---/$package/g;
$cursor =~ s/---LEVEL---/$level/g;
$cursor =~ s/---STORE---/$store/g;
$cursor =~ s/---CONN---/$conn/g;
$cursor = $dbh->prepare($cursor);
$cursor->execute();
my $erg = [];
my @ee;
while (0 == 0) {
@ee = $cursor->fetchrow();
last if (!@ee);
push(@$erg,[@ee]);
}
$cursor->finish();
delete ( $self->{'PARENT'}->{'DBH'} );
return($erg);
}
#*************************************************************************
sub xxchilds {
my $self = shift;
my $all = shift;
my $cursor = shift || $self->{'package'};
my $level = $cursor;
my $store = $self->{'PARENT'}->tblstore();
my $dbh = $self->{'PARENT'}->dbh();
$cursor = "select package from $store where " .
"pkgstart like '$cursor"."::\%'";
if (!$all) {
$level =~ s/[^\:]//g;
$level = sprintf("%03u",1+length($level)/2);
$cursor = $cursor . " and level = '$level'";
}
$cursor = $dbh->prepare($cursor);
$cursor->execute();
my $erg = [];
my @ee;
while (0 == 0) {
@ee = $cursor->fetchrow();
last if (!@ee);
push(@$erg,[@ee]);
}
$cursor->finish();
delete ( $self->{'PARENT'}->{'DBH'} );
return($erg);
}
#*************************************************************************
1;