1*b1cdbd2cSJim Jagielski# ************************************************************* 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski# ************************************************************* 21*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+\"$@\"}' 22*b1cdbd2cSJim Jagielski if 0; 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski# This program has to start for the new convwatch, 25*b1cdbd2cSJim Jagielski# once on Windows environment and once on Linux environment 26*b1cdbd2cSJim Jagielski# Solaris is handled by the linux also. 27*b1cdbd2cSJim Jagielski# 28*b1cdbd2cSJim Jagielski# This program polls the database (documentcompare) every 60s for new jobs 29*b1cdbd2cSJim Jagielski# it runs over the given directory from documentpoolpath and pool, and create for every file 30*b1cdbd2cSJim Jagielski# a new database entry in documents. 31*b1cdbd2cSJim Jagielski# 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim JagielskiBEGIN 34*b1cdbd2cSJim Jagielski{ 35*b1cdbd2cSJim Jagielski # Adding the path of this script file to the include path in the hope 36*b1cdbd2cSJim Jagielski # that all used modules can be found in it. 37*b1cdbd2cSJim Jagielski $0 =~ /^(.*)[\/\\]/; 38*b1cdbd2cSJim Jagielski push @INC, $1; 39*b1cdbd2cSJim Jagielski} 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielskiuse ConvwatchHelper; 42*b1cdbd2cSJim Jagielskiuse CallExternals; 43*b1cdbd2cSJim Jagielskiuse stringhelper; 44*b1cdbd2cSJim Jagielskiuse filehelper; 45*b1cdbd2cSJim Jagielskiuse oshelper; 46*b1cdbd2cSJim Jagielskiuse timehelper; 47*b1cdbd2cSJim Jagielskiuse cwstestresulthelper; 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielskiuse strict; 50*b1cdbd2cSJim Jagielskiuse Cwd; 51*b1cdbd2cSJim Jagielskiuse File::Basename; 52*b1cdbd2cSJim Jagielskiuse English; # $OSNAME, ... 53*b1cdbd2cSJim Jagielskiuse Getopt::Long; 54*b1cdbd2cSJim Jagielskiuse File::Path; 55*b1cdbd2cSJim Jagielskiuse Cwd 'chdir'; 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielskimy $cwd = getcwd(); 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielskiour $help; # Help option flag 60*b1cdbd2cSJim Jagielskiour $version; # Version option flag 61*b1cdbd2cSJim Jagielskiour $test; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielskiour $version_info = 'convwatch.pl $Revision: 1.24 $ '; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielskiour $SOLARENV; 66*b1cdbd2cSJim Jagielskiour $COMMON_ENV_TOOLS; 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielskiour $documentpoolname; 70*b1cdbd2cSJim Jagielskiour $documentpoolpath; 71*b1cdbd2cSJim Jagielskiour $dbdistinct; 72*b1cdbd2cSJim Jagielskiour $sParentDistinct; 73*b1cdbd2cSJim Jagielskiour $sCurrentDocumentPool; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielskiour $fs; 76*b1cdbd2cSJim Jagielskiour @aEntries; 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski# Prototypes 79*b1cdbd2cSJim Jagielski# sub getJavaFileDirSeparator(); 80*b1cdbd2cSJim Jagielskisub readdirectory($$$); 81*b1cdbd2cSJim Jagielskisub putDocumentInDB($$$); 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski# flush STDOUT 84*b1cdbd2cSJim Jagielskimy $old_handle = select (STDOUT); # "select" STDOUT and save # previously selected handle 85*b1cdbd2cSJim Jagielski$| = 1; # perform flush after each write to STDOUT 86*b1cdbd2cSJim Jagielskiselect ($old_handle); # restore previously selected handle 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim JagielskisetPrefix("gfxcmp"); 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielskiif (!GetOptions( 91*b1cdbd2cSJim Jagielski "test" => \$test, 92*b1cdbd2cSJim Jagielski "help" => \$help, 93*b1cdbd2cSJim Jagielski "version" => \$version 94*b1cdbd2cSJim Jagielski )) 95*b1cdbd2cSJim Jagielski{ 96*b1cdbd2cSJim Jagielski print_usage(*STDERR); 97*b1cdbd2cSJim Jagielski exit(1); 98*b1cdbd2cSJim Jagielski} 99*b1cdbd2cSJim Jagielskiif ($help) 100*b1cdbd2cSJim Jagielski{ 101*b1cdbd2cSJim Jagielski print_usage(*STDOUT); 102*b1cdbd2cSJim Jagielski exit(0); 103*b1cdbd2cSJim Jagielski} 104*b1cdbd2cSJim Jagielski# Check for version option 105*b1cdbd2cSJim Jagielskiif ($version) 106*b1cdbd2cSJim Jagielski{ 107*b1cdbd2cSJim Jagielski print STDERR "$version_info\n"; 108*b1cdbd2cSJim Jagielski exit(0); 109*b1cdbd2cSJim Jagielski} 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 112*b1cdbd2cSJim Jagielski# within mysql it is better to use only '/' 113*b1cdbd2cSJim Jagielski$fs = "/"; # getJavaFileDirSeparator(); 114*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 115*b1cdbd2cSJim Jagielskisub readdirectory($$$) 116*b1cdbd2cSJim Jagielski{ 117*b1cdbd2cSJim Jagielski my $startdir = shift; 118*b1cdbd2cSJim Jagielski my $sValues = shift; 119*b1cdbd2cSJim Jagielski my $hook = shift; 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski my $myfile; 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski local *DIR; 124*b1cdbd2cSJim Jagielski chdir $startdir; 125*b1cdbd2cSJim Jagielski cwd(); 126*b1cdbd2cSJim Jagielski if (! endswith($startdir, $fs)) 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski $startdir .= $fs; 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski my $nCountFiles = 0; 132*b1cdbd2cSJim Jagielski if (opendir (DIR, $startdir)) # Directory oeffnen 133*b1cdbd2cSJim Jagielski { 134*b1cdbd2cSJim Jagielski while ($myfile = readdir(DIR)) 135*b1cdbd2cSJim Jagielski { # ein filename holen 136*b1cdbd2cSJim Jagielski #if (! -l $myfile) # not a link 137*b1cdbd2cSJim Jagielski #{ 138*b1cdbd2cSJim Jagielski if (-d $myfile ) # is a directory 139*b1cdbd2cSJim Jagielski { 140*b1cdbd2cSJim Jagielski if ( -l $myfile) 141*b1cdbd2cSJim Jagielski { 142*b1cdbd2cSJim Jagielski next; 143*b1cdbd2cSJim Jagielski } 144*b1cdbd2cSJim Jagielski if ($myfile ne "." && $myfile ne "..") 145*b1cdbd2cSJim Jagielski { 146*b1cdbd2cSJim Jagielski my $sNewStartDir = $startdir . $myfile ."/"; # neuen Directorystring erstellen 147*b1cdbd2cSJim Jagielski if ($sNewStartDir =~ "^\/proc" || 148*b1cdbd2cSJim Jagielski $sNewStartDir =~ "^\/dev" || 149*b1cdbd2cSJim Jagielski $sNewStartDir =~ "^\/udev" || 150*b1cdbd2cSJim Jagielski $sNewStartDir =~ "lost+found" ) 151*b1cdbd2cSJim Jagielski { 152*b1cdbd2cSJim Jagielski next; 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski # my $sNewDestDir = $destdir . $myfile ."/"; 155*b1cdbd2cSJim Jagielski # do a recursive call 156*b1cdbd2cSJim Jagielski # $nCountFiles++; 157*b1cdbd2cSJim Jagielski my $nFileCount = readdirectory($sNewStartDir, $sValues, $hook); 158*b1cdbd2cSJim Jagielski # workOnDir($sNewDir, $nFileCount); 159*b1cdbd2cSJim Jagielski $nCountFiles += $nFileCount; 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski chdir ($startdir); # zurueckwechseln. 162*b1cdbd2cSJim Jagielski cwd(); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski else 166*b1cdbd2cSJim Jagielski { 167*b1cdbd2cSJim Jagielski # File must exist, be a regular file and must not be the $onlyOnFile 168*b1cdbd2cSJim Jagielski if (-f $myfile) 169*b1cdbd2cSJim Jagielski { 170*b1cdbd2cSJim Jagielski # print " $startdir" . "$myfile\n"; 171*b1cdbd2cSJim Jagielski $nCountFiles++; 172*b1cdbd2cSJim Jagielski # workOnFile($startdir, $myfile, $destdir); 173*b1cdbd2cSJim Jagielski $hook->($startdir, $myfile, $sValues); 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski } 176*b1cdbd2cSJim Jagielski #} 177*b1cdbd2cSJim Jagielski #else 178*b1cdbd2cSJim Jagielski #{ 179*b1cdbd2cSJim Jagielski # print "linked file: $dir/$myfile\n"; 180*b1cdbd2cSJim Jagielski #} 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski closedir(DIR); 183*b1cdbd2cSJim Jagielski } 184*b1cdbd2cSJim Jagielski else 185*b1cdbd2cSJim Jagielski { 186*b1cdbd2cSJim Jagielski print "could not open $startdir\n"; 187*b1cdbd2cSJim Jagielski } 188*b1cdbd2cSJim Jagielski return $nCountFiles; 189*b1cdbd2cSJim Jagielski} 190*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 191*b1cdbd2cSJim Jagielskisub putDocumentInDB($$$) 192*b1cdbd2cSJim Jagielski{ 193*b1cdbd2cSJim Jagielski my $currentDir = shift; 194*b1cdbd2cSJim Jagielski my $currentFile = shift; 195*b1cdbd2cSJim Jagielski my $sValues = shift; 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski my $sSourceFilename = $currentDir . $currentFile; 198*b1cdbd2cSJim Jagielski # we cut down all the previous names like documentpoolpath and the documentpoolname 199*b1cdbd2cSJim Jagielski $sSourceFilename = substr($sSourceFilename, length($sCurrentDocumentPool . $fs)); 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski my $sSQL = "INSERT INTO documents (dbdistinct2, name, pagecount, priority, parentdistinct) VALUES"; 202*b1cdbd2cSJim Jagielski $sSQL .= "('" . $dbdistinct . "', '" . $sSourceFilename . "', 0, 1, '". $sParentDistinct . "')"; 203*b1cdbd2cSJim Jagielski # print $sSQL . "\n"; 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski push(@aEntries, $sSQL); 206*b1cdbd2cSJim Jagielski # ExecSQL($sSQL); 207*b1cdbd2cSJim Jagielski} 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 210*b1cdbd2cSJim Jagielskisub createDBEntriesForEveryDocument($) 211*b1cdbd2cSJim Jagielski{ 212*b1cdbd2cSJim Jagielski my $sStr = shift; 213*b1cdbd2cSJim Jagielski if ($sStr =~ /^MySQL-Error/ ) 214*b1cdbd2cSJim Jagielski { 215*b1cdbd2cSJim Jagielski # we don't do anything if an error occured 216*b1cdbd2cSJim Jagielski return; 217*b1cdbd2cSJim Jagielski } 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski # interpret the follows string 220*b1cdbd2cSJim Jagielski # documentpoolpath='//so-gfxcmp-documents/doc-pool', documentpool='demo_lla', dbdistinct=62, 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski # my $sDocumentPoolDir; 223*b1cdbd2cSJim Jagielski if ( $sStr =~ /documentpoolpath='(.*?)',/ ) 224*b1cdbd2cSJim Jagielski { 225*b1cdbd2cSJim Jagielski $documentpoolpath = $1; 226*b1cdbd2cSJim Jagielski } 227*b1cdbd2cSJim Jagielski if (! $documentpoolpath) 228*b1cdbd2cSJim Jagielski { 229*b1cdbd2cSJim Jagielski print "Error: no value for documentpoolpath found.\n"; 230*b1cdbd2cSJim Jagielski return; 231*b1cdbd2cSJim Jagielski } 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski # my $sDocumentPool; 234*b1cdbd2cSJim Jagielski if ( $sStr =~ /documentpool='(.*?)',/ ) 235*b1cdbd2cSJim Jagielski { 236*b1cdbd2cSJim Jagielski $documentpoolname = $1; 237*b1cdbd2cSJim Jagielski } 238*b1cdbd2cSJim Jagielski if (! $documentpoolname) 239*b1cdbd2cSJim Jagielski { 240*b1cdbd2cSJim Jagielski print "Error: no value for documentpool found.\n"; 241*b1cdbd2cSJim Jagielski return; 242*b1cdbd2cSJim Jagielski } 243*b1cdbd2cSJim Jagielski # my $dbdistinct; 244*b1cdbd2cSJim Jagielski if ( $sStr =~ /dbdistinct2='(\S*?)',/ ) 245*b1cdbd2cSJim Jagielski { 246*b1cdbd2cSJim Jagielski $dbdistinct = $1; 247*b1cdbd2cSJim Jagielski } 248*b1cdbd2cSJim Jagielski if (! $dbdistinct) 249*b1cdbd2cSJim Jagielski { 250*b1cdbd2cSJim Jagielski print "Error: no dbdistinct given.\n"; 251*b1cdbd2cSJim Jagielski return; 252*b1cdbd2cSJim Jagielski } 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski if (! -d $documentpoolpath ) 255*b1cdbd2cSJim Jagielski { 256*b1cdbd2cSJim Jagielski my $sEnv = getEnvironment(); 257*b1cdbd2cSJim Jagielski if ( isUnixEnvironment() ) 258*b1cdbd2cSJim Jagielski { 259*b1cdbd2cSJim Jagielski $documentpoolpath = "/net/so-gfxcmp-documents" . $documentpoolpath; 260*b1cdbd2cSJim Jagielski } 261*b1cdbd2cSJim Jagielski if ( -d $documentpoolpath ) 262*b1cdbd2cSJim Jagielski { 263*b1cdbd2cSJim Jagielski print "Warning: given documentpoolpath seems to be local, fix to '$documentpoolpath'\n"; 264*b1cdbd2cSJim Jagielski my $sSQL = "UPDATE documentcompare SET documentpoolpath='$documentpoolpath' WHERE dbdistinct2='$dbdistinct'"; 265*b1cdbd2cSJim Jagielski print "$sSQL\n"; 266*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 267*b1cdbd2cSJim Jagielski } 268*b1cdbd2cSJim Jagielski else 269*b1cdbd2cSJim Jagielski { 270*b1cdbd2cSJim Jagielski print "Error: documentpoolpath '$documentpoolpath' not found. Don't insert anything.\n"; 271*b1cdbd2cSJim Jagielski my $sSQL = "UPDATE documentcompare SET state='failed',info='documentpoolpath not found.' WHERE dbdistinct2='$dbdistinct'"; 272*b1cdbd2cSJim Jagielski print "$sSQL\n"; 273*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 274*b1cdbd2cSJim Jagielski return; 275*b1cdbd2cSJim Jagielski } 276*b1cdbd2cSJim Jagielski } 277*b1cdbd2cSJim Jagielski # create the documentpool directory, to run through 278*b1cdbd2cSJim Jagielski $sCurrentDocumentPool = $documentpoolpath; 279*b1cdbd2cSJim Jagielski if (! endswith($sCurrentDocumentPool, $fs)) 280*b1cdbd2cSJim Jagielski { 281*b1cdbd2cSJim Jagielski $sCurrentDocumentPool .= $fs; 282*b1cdbd2cSJim Jagielski } 283*b1cdbd2cSJim Jagielski $sCurrentDocumentPool .= $documentpoolname; 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski if ( -d $sCurrentDocumentPool ) 286*b1cdbd2cSJim Jagielski { 287*b1cdbd2cSJim Jagielski if ( $sStr =~ /parentdistinct='(.*?)',/ ) 288*b1cdbd2cSJim Jagielski { 289*b1cdbd2cSJim Jagielski $sParentDistinct = $1; 290*b1cdbd2cSJim Jagielski } 291*b1cdbd2cSJim Jagielski else 292*b1cdbd2cSJim Jagielski { 293*b1cdbd2cSJim Jagielski $sParentDistinct = ""; 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski 296*b1cdbd2cSJim Jagielski # remove any doubles, if any 297*b1cdbd2cSJim Jagielski my $sSQL = "DELETE FROM documents WHERE dbdistinct2='$dbdistinct'"; 298*b1cdbd2cSJim Jagielski print "$sSQL\n"; 299*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 300*b1cdbd2cSJim Jagielski 301*b1cdbd2cSJim Jagielski # run over the whole given document pool and store every found document name in the database 302*b1cdbd2cSJim Jagielski readdirectory($sCurrentDocumentPool, "", \&putDocumentInDB); 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielski chdir $cwd; 305*b1cdbd2cSJim Jagielski cwd(); 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski foreach $sSQL (@aEntries) 308*b1cdbd2cSJim Jagielski { 309*b1cdbd2cSJim Jagielski # print "# $sSQL\n"; 310*b1cdbd2cSJim Jagielski print "$sSQL\n"; 311*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 312*b1cdbd2cSJim Jagielski } 313*b1cdbd2cSJim Jagielski 314*b1cdbd2cSJim Jagielski my $sSQL = "UPDATE documentcompare SET state='inprogress' WHERE dbdistinct2='$dbdistinct'"; 315*b1cdbd2cSJim Jagielski print "$sSQL\n"; 316*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 317*b1cdbd2cSJim Jagielski print "----------------------------------------------------------------------\n"; 318*b1cdbd2cSJim Jagielski $sParentDistinct = ""; 319*b1cdbd2cSJim Jagielski @aEntries = (); 320*b1cdbd2cSJim Jagielski } 321*b1cdbd2cSJim Jagielski else 322*b1cdbd2cSJim Jagielski { 323*b1cdbd2cSJim Jagielski print "Error: Given document pool '$sCurrentDocumentPool' doesn't exists.\n"; 324*b1cdbd2cSJim Jagielski my $sSQL = "UPDATE documentcompare SET state='cancelled' WHERE dbdistinct2='$dbdistinct'"; 325*b1cdbd2cSJim Jagielski ExecSQL($sSQL); 326*b1cdbd2cSJim Jagielski return; 327*b1cdbd2cSJim Jagielski } 328*b1cdbd2cSJim Jagielski # Send Mail, due to startconvwatch now 329*b1cdbd2cSJim Jagielski sendMail($sStr, $documentpoolname, $dbdistinct); 330*b1cdbd2cSJim Jagielski} 331*b1cdbd2cSJim Jagielski 332*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 333*b1cdbd2cSJim Jagielskisub sendMail($$$) 334*b1cdbd2cSJim Jagielski{ 335*b1cdbd2cSJim Jagielski my $sStr = shift; 336*b1cdbd2cSJim Jagielski my $documentpool = shift; 337*b1cdbd2cSJim Jagielski my $dbdistinct = shift; 338*b1cdbd2cSJim Jagielski my $sourceversion; 339*b1cdbd2cSJim Jagielski if ( $sStr =~ /sourceversion='(.*?)',/ ) 340*b1cdbd2cSJim Jagielski { 341*b1cdbd2cSJim Jagielski $sourceversion = $1; 342*b1cdbd2cSJim Jagielski } 343*b1cdbd2cSJim Jagielski if (! $sourceversion) 344*b1cdbd2cSJim Jagielski { 345*b1cdbd2cSJim Jagielski print "Warning: no value for sourceversion found.\n"; 346*b1cdbd2cSJim Jagielski return; 347*b1cdbd2cSJim Jagielski } 348*b1cdbd2cSJim Jagielski my $destinationversion; 349*b1cdbd2cSJim Jagielski if ( $sStr =~ /destinationversion='(.*?)',/ ) 350*b1cdbd2cSJim Jagielski { 351*b1cdbd2cSJim Jagielski $destinationversion = $1; 352*b1cdbd2cSJim Jagielski } 353*b1cdbd2cSJim Jagielski if (! $destinationversion) 354*b1cdbd2cSJim Jagielski { 355*b1cdbd2cSJim Jagielski print "Warning: no value for destinationversion found.\n"; 356*b1cdbd2cSJim Jagielski return; 357*b1cdbd2cSJim Jagielski } 358*b1cdbd2cSJim Jagielski my $mailaddress; 359*b1cdbd2cSJim Jagielski if ( $sStr =~ /mailfeedback='(.*?)',/ ) 360*b1cdbd2cSJim Jagielski { 361*b1cdbd2cSJim Jagielski $mailaddress = $1; 362*b1cdbd2cSJim Jagielski } 363*b1cdbd2cSJim Jagielski if (! $mailaddress) 364*b1cdbd2cSJim Jagielski { 365*b1cdbd2cSJim Jagielski print "Warning: no value for mailfeedback found.\n"; 366*b1cdbd2cSJim Jagielski return; 367*b1cdbd2cSJim Jagielski } 368*b1cdbd2cSJim Jagielski 369*b1cdbd2cSJim Jagielski # state is 'inprogress', so send a mail 370*b1cdbd2cSJim Jagielski # my $sMailAddress = getMailAddress($sDoneStr); 371*b1cdbd2cSJim Jagielski my $sParams = "$sourceversion"; 372*b1cdbd2cSJim Jagielski $sParams .= " $destinationversion"; 373*b1cdbd2cSJim Jagielski $sParams .= " $documentpool"; 374*b1cdbd2cSJim Jagielski $sParams .= " $dbdistinct"; 375*b1cdbd2cSJim Jagielski $sParams .= " $mailaddress"; 376*b1cdbd2cSJim Jagielski $sParams .= " starts"; # run through state of convwatch 377*b1cdbd2cSJim Jagielski 378*b1cdbd2cSJim Jagielski my $sMailProgram = appendPath(getQADEVToolsPath(), "mailsend.php"); 379*b1cdbd2cSJim Jagielski 380*b1cdbd2cSJim Jagielski my $err; 381*b1cdbd2cSJim Jagielski my @lines; 382*b1cdbd2cSJim Jagielski my $sLine; 383*b1cdbd2cSJim Jagielski ($err, @lines) = callphp(getPHPExecutable(), $sMailProgram, $sParams); 384*b1cdbd2cSJim Jagielski foreach $sLine (@lines) 385*b1cdbd2cSJim Jagielski { 386*b1cdbd2cSJim Jagielski log_print( "Mail: $sLine\n"); 387*b1cdbd2cSJim Jagielski } 388*b1cdbd2cSJim Jagielski 389*b1cdbd2cSJim Jagielski if ($documentpool eq "EIS-tests") 390*b1cdbd2cSJim Jagielski { 391*b1cdbd2cSJim Jagielski cwstestresult("running", $dbdistinct, $sourceversion, $destinationversion, $SOLARENV, $COMMON_ENV_TOOLS); 392*b1cdbd2cSJim Jagielski } 393*b1cdbd2cSJim Jagielski} 394*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 395*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 396*b1cdbd2cSJim Jagielski 397*b1cdbd2cSJim Jagielskimy $sEnvironmentCondition; 398*b1cdbd2cSJim Jagielskiif (isWindowsEnvironment()) 399*b1cdbd2cSJim Jagielski{ 400*b1cdbd2cSJim Jagielski $sEnvironmentCondition = "environment='" . getEnvironment() . "'"; 401*b1cdbd2cSJim Jagielski} 402*b1cdbd2cSJim Jagielskielsif (isUnixEnvironment()) 403*b1cdbd2cSJim Jagielski{ 404*b1cdbd2cSJim Jagielski # $sEnvironmentCondition = " ( environment='unxlngi' OR environment='unxsoli' ) "; 405*b1cdbd2cSJim Jagielski $sEnvironmentCondition = " environment='" . getEnvironment() . "'"; 406*b1cdbd2cSJim Jagielski} 407*b1cdbd2cSJim Jagielskielse 408*b1cdbd2cSJim Jagielski{ 409*b1cdbd2cSJim Jagielski print "Error: wrong environment.\n"; 410*b1cdbd2cSJim Jagielski exit(1); 411*b1cdbd2cSJim Jagielski} 412*b1cdbd2cSJim Jagielskimy $sWhereClause = "WHERE "; 413*b1cdbd2cSJim Jagielskiif ($sEnvironmentCondition) 414*b1cdbd2cSJim Jagielski{ 415*b1cdbd2cSJim Jagielski $sWhereClause .= $sEnvironmentCondition . " AND "; 416*b1cdbd2cSJim Jagielski} 417*b1cdbd2cSJim Jagielski$sWhereClause .= " state='new'"; 418*b1cdbd2cSJim Jagielski 419*b1cdbd2cSJim JagielskisetToolsPath(getQADEVToolsPath()); 420*b1cdbd2cSJim Jagielski 421*b1cdbd2cSJim Jagielski# ---------------------------------- main loop ---------------------------------- 422*b1cdbd2cSJim Jagielskiwhile (1) 423*b1cdbd2cSJim Jagielski{ 424*b1cdbd2cSJim Jagielski my @aResult; 425*b1cdbd2cSJim Jagielski my $sSQL = "SELECT documentpoolpath,documentpool,dbdistinct2,sourceversion,destinationversion,mailfeedback,parentdistinct FROM documentcompare $sWhereClause"; 426*b1cdbd2cSJim Jagielski @aResult = ExecSQL($sSQL); 427*b1cdbd2cSJim Jagielski 428*b1cdbd2cSJim Jagielski my $aValue; 429*b1cdbd2cSJim Jagielski foreach $aValue (@aResult) 430*b1cdbd2cSJim Jagielski { 431*b1cdbd2cSJim Jagielski # print "# $nValue\n"; 432*b1cdbd2cSJim Jagielski createDBEntriesForEveryDocument($aValue); 433*b1cdbd2cSJim Jagielski } 434*b1cdbd2cSJim Jagielski if ($test) 435*b1cdbd2cSJim Jagielski { 436*b1cdbd2cSJim Jagielski last; 437*b1cdbd2cSJim Jagielski } 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski # wait 30sec. 440*b1cdbd2cSJim Jagielski # wait30seconds(); 441*b1cdbd2cSJim Jagielski waitAMinute(); 442*b1cdbd2cSJim Jagielski checkForStop("stop_fill_documents_loop"); 443*b1cdbd2cSJim Jagielski} 444