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