Project

General

Profile

Revision 1955

Added by Matt Jones over 17 years ago

Updates that allow registry script to update the lastid field more efficiently
by calling the metacat 'getlastdocid' function for a given scope. Also some
debugging support added, and a bug where the error message was inproperly
saved across calls to metacat, resulting in spurious error messages.

View differences:

lib/style/skins/obfs/obfs.cfg
22 22
sender = OBFS Data Registry <obfsadmin@lternet.edu>
23 23
recipient = tmaddux@lternet.edu
24 24
adminname = Troy Maddux
25
debug = 0
25 26
#
26 27
# These are the sites and their coordinates. Coordinates are in
27 28
# degrees:minutes:seconds:direction format
src/perl/register-dataset.cgi
82 82
$config->define("guideTemplate", { DEFAULT => 'crap.tmpl'} );
83 83
$config->define("confirmDataTemplate", { DEFAULT => 'crap.tmpl'} );
84 84
$config->define("deleteDataTemplate", { DEFAULT => 'crap.tmpl'} );
85
$config->define("debug", { DEFAULT => '0'} );
85 86
$config->define("lat", { ARGCOUNT => ARGCOUNT_HASH} );
86 87
$config->define("lon", { ARGCOUNT => ARGCOUNT_HASH} );
87 88

  
......
116 117
my $sender = $config->sender();
117 118
my $recipient = $config->recipient();
118 119
my $adminname = $config->adminname();
120
my $debug = $config->debug();
119 121
my $lat = $config->get('lat');
120 122
my $lon = $config->get('lon');
121 123

  
......
286 288
        push(@errorMessages, "Failed during login.\n");
287 289
    }
288 290

  
289
    if($FORM::docid eq ""){
291
debug( "Registry: A");
292
    if ($FORM::docid eq "") {
293
        debug( "Registry: B1");
290 294
	    # document is being inserted 
291 295
	    my $notunique = "NOT_UNIQUE";
292 296
	    while ($notunique eq "NOT_UNIQUE") {
......
307 311
	        #print TFILE $newdoc;
308 312
	        #close(TFILE);
309 313
	        #   }
314

  
315
            # The id wasn't unique, so update our lastid file
316
	        if ($notunique eq "NOT_UNIQUE") {
317
                updateLastId($defaultScope);
318
            }
310 319
	    }
311
	    if (! ($notunique eq "SUCCESS")) {
320
        debug("Registry: B2");
321
	    if ($notunique ne "SUCCESS") {
322
            debug("Registry: NO SUCCESS");
323
            debug("Message is: $notunique");
312 324
            push(@errorMessages, $notunique);
313 325
	    }
326
        debug("Registry: B3");
314 327
    } else {
315 328
	    # document is being modified
316 329
	    $docid = $FORM::docid;
......
330 343
	    if (! $response) {
331 344
	        push(@errorMessages, $metacat->getMessage());
332 345
	        push(@errorMessages, "Failed while updating.\n");  
333
	    } else {
334
	        #deleteData(0);
335 346
	    }
336 347

  
337 348
	    if (scalar(@errorMessages)) {
349
            debug("Registry: ErrorMessages defined in modify.");
338 350
	        $$templateVars{'status'} = 'failure';
339 351
	        $$templateVars{'errorMessages'} = \@errorMessages;
340 352
	        $error = 1;
341 353
	    }
342 354

  
343
#if (! $error) {
344
#sendNotification($docid, $mailhost, $sender, $recipient);
345
#}
355
        #if (! $error) {
356
            #sendNotification($docid, $mailhost, $sender, $recipient);
357
        #}
346 358
	
347 359
        # Create our HTML response and send it back
348 360
	    $$templateVars{'function'} = "modified";
......
353 365
    }
354 366
}
355 367

  
368
debug("Registry: C");
356 369

  
357 370
if (scalar(@errorMessages)) {
371
    debug("Registry: ErrorMessages defined.");
358 372
    $$templateVars{'status'} = 'failure';
359 373
    $$templateVars{'errorMessages'} = \@errorMessages;
360 374
    $error = 1;
......
374 388

  
375 389
################################################################################
376 390
#
391
# Subroutine for updating a metacat id for a given scope to the highest value
392
#
393
################################################################################
394
sub updateLastId {
395
  my $scope = shift;
396

  
397
  my $errormsg = 0;
398
  my $docid = $metacat->getLastId($scope);
399

  
400
  if ($docid =~ /null/) {
401
      # No docids with this scope present, so do nothing
402
  } elsif ($docid) {
403
      # Update the lastid file for this scope
404
      (my $foundScope, my $id, my $rev) = split(/\./, $docid);
405
      debug("Docid is: $docid\n");
406
      debug("Lastid is: $id");
407
      my $scopeFile = $cfgdir . "/" . $FORM::cfg . "/" . $scope . ".lastid";
408
      open(LASTID, ">$scopeFile") or 
409
          die "Failed to open lastid file for writing!";
410
      print LASTID $id, "\n";
411
      close(LASTID);
412
  } else {
413
    $errormsg = $metacat->getMessage();
414
    debug("Error in getLastId: $errormsg");
415
  }
416
}
417

  
418
################################################################################
419
#
377 420
# Subroutine for inserting a document to metacat
378 421
#
379 422
################################################################################
......
2426 2469
#}
2427 2470

  
2428 2471

  
2472
################################################################################
2473
# 
2474
# print debugging messages to stderr
2475
#
2476
################################################################################
2477
sub debug {
2478
    my $msg = shift;
2479
    
2480
    if ($debug) {
2481
        print STDERR "$msg\n";
2482
    }
2483
}
src/perl/Metacat/Metacat.pm
96 96
  my $self = shift;
97 97
  my %postData = ( @_ );
98 98

  
99
  $self->{'message'} = '';
99 100
  my $userAgent = new LWP::UserAgent;
100 101
  $userAgent->agent("MetacatClient/1.0");
101 102
  

Also available in: Unified diff