r4517 - trunk/src/perl

walbridge at ecoinformatics.org walbridge at ecoinformatics.org
Wed Nov 5 17:20:19 PST 2008


Author: walbridge
Date: 2008-11-05 17:20:19 -0800 (Wed, 05 Nov 2008)
New Revision: 4517

Modified:
   trunk/src/perl/register-dataset.cgi
Log:
Partial fix for #3496, making the registry create EML 2.1.0 documents. The documents are internally valid 2.1.0 (they run against the validator correctly) but aren't inserting into Metacat correctly as of yet.


Modified: trunk/src/perl/register-dataset.cgi
===================================================================
--- trunk/src/perl/register-dataset.cgi	2008-11-06 00:05:28 UTC (rev 4516)
+++ trunk/src/perl/register-dataset.cgi	2008-11-06 01:20:19 UTC (rev 4517)
@@ -381,10 +381,10 @@
     my $xmldoc = createXMLDocument();
     
     # Write out the XML file for debugging purposes
-    #my $testFile = $tempDir . "/test-file.xml";
-    #open (TFILE,">$testFile") || die ("Cant open xml file...\n");
-    #print TFILE $xmldoc;
-    #close(TFILE);
+    my $testFile = $tempDir . "/registry-eml-upload.xml";
+    open (TFILE,">$testFile") || die ("Cant open xml file...\n");
+    print TFILE $xmldoc;
+    close(TFILE);
 
     my $xmldocWithDocID = $xmldoc;
     my $errorMessage = "";
@@ -1084,7 +1084,8 @@
 
 sub createProjectDocument {
     my $doc = EMLStart();
-
+    $doc .= accessElement();
+    $doc .= datasetStart();
     $doc .= titleElement();
     $doc .= creatorNameElement();
     $doc .= creatorElement();
@@ -1105,7 +1106,6 @@
     $doc .= "</studyAreaDescription>\n";
 
     $doc .= "</project>";
-    $doc .= accessElement();
     $doc .= datasetEnd();
     $doc .= EMLEnd();
     return $doc;
@@ -1113,6 +1113,8 @@
 
 sub createDatasetDocument {
     my $doc = EMLStart();
+    $doc .= accessElement();
+    $doc .= datasetStart();
     $doc .= titleElement();
     $doc .= creatorElement();
     $doc .= contactElement('creator');
@@ -1127,11 +1129,9 @@
     $doc .= coverageElement();
     $doc .= contactElement();
     $doc .= methodsElement();
-    $doc .= accessElement();
     my %fileData = allFileData();
     $doc .= entityElement(\%fileData);
     $doc .= datasetEnd();
-    $doc .= addMetaElement(\%fileData);
     $doc .= EMLEnd();
 }
 
@@ -1213,6 +1213,7 @@
     my %entityObjects = %$entityObjects;
     my $entityList = "";
 
+    my $access = fileAccessElement(\%entityObjects);
     while ( my ($docid, $data) = each(%entityObjects) ) {
         my $entityStub = qq|<otherEntity id="$data->{'entityid'}" scope="document">
             <entityName>$data->{'fileName'}</entityName>
@@ -1229,6 +1230,7 @@
                     <online>
                         <url function="download">$data->{'url'}</url>
                     </online>
+                    $access
                 </distribution>
             </physical>
             <entityType>$data->{'entityType'}</entityType>
@@ -1240,13 +1242,13 @@
     return $entityList;
 }
 
-sub addMetaElement() {
+sub fileAccessElement() {
     my $entityObjects = shift;
     my %entityObjects = %$entityObjects;
     my $userAccess = allowElement(getUsername(), 'all');
     my $skinAccess = allowElement($username, 'all');
+    my $accessList = "";
 
-    my $accessList = "";
     # form name => EML permission; roles akin to Apache model
     my %accessRoles = (
         'public'  => 'allow',
@@ -1255,8 +1257,7 @@
 
     while ( my ($docid, $data) = each(%entityObjects) ) {
         my $defaultAccess = $accessRoles{$data->{'filePerm'}};
-        my $accessStub = qq|<additionalMetadata>
-            <describes>$data->{'distribid'}</describes>
+        $accessList = qq|
                 <access authSystem="knb" order="denyFirst">
                     $skinAccess
                     $userAccess 
@@ -1265,9 +1266,7 @@
                         <permission>read</permission>
                     </$defaultAccess>
                 </access>
-      </additionalMetadata>
     |;
-        $accessList .= $accessStub;
     }
 
   return $accessList;
@@ -1317,23 +1316,18 @@
     my $gmt = gmtime($now);
     my $doc =  "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
 
-    $doc .= "<eml:eml
-                      packageId=\"docid\" system=\"knb\"
-                      xmlns:eml=\"eml://ecoinformatics.org/eml-2.0.1\"
-                      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
-                      xmlns:ds=\"eml://ecoinformatics.org/dataset-2.0.1\"
-                      xmlns:stmml=\"http://www.xml-cml.org/schema/stmml\"
-                      xsi:schemaLocation=\"eml://ecoinformatics.org/eml-2.0.1 eml.xsd\">\n";
+    $doc .= qq|<eml:eml
+      packageId="docid" system="knb"
+      xmlns:eml="eml://ecoinformatics.org/eml-2.1.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xmlns:ds="eml://ecoinformatics.org/dataset-2.1.0"
+      xmlns:stmml="http://www.xml-cml.org/schema/stmml"
+      xsi:schemaLocation="eml://ecoinformatics.org/eml-2.1.0 eml.xsd">
+|;
 
     $doc .= "<!-- Person who filled in the catalog entry form: ";
     $doc .= normalize($FORM::providerGivenName)." ".normalize($FORM::providerSurName)." -->\n";
     $doc .= "<!-- Form filled out at $gmt GMT -->\n";
-    $doc .= "<dataset>\n";
-
-    if (hasContent($FORM::identifier)) {
-        $doc .= "<alternateIdentifier system=\"$FORM::site\">";
-        $doc .= normalize($FORM::identifier) . "</alternateIdentifier>\n";
-    }
     return $doc;
 }
 
@@ -1341,6 +1335,16 @@
     return  "</eml:eml>\n";
 }
 
+sub datasetStart() {
+    my $dataset = "<dataset>\n";
+        
+    if (hasContent($FORM::identifier)) {
+        $dataset .= "<alternateIdentifier system=\"$FORM::site\">";
+        $dataset .= normalize($FORM::identifier) . "</alternateIdentifier>\n";
+    }
+    return $dataset;
+}
+                                   
 sub datasetEnd() {
     return "</dataset>\n";
 }



More information about the Metacat-cvs mailing list