Project

General

Profile

1 2563 harris
#!/usr/bin/perl
2
3
# check that the correct number or parameters are issued
4
if (($#ARGV +1) != 3) {die "Usage: %./get_eml.pl <metacat_url> <login> <passwd>\n\n";}
5
6
($url, $username, $password) = @ARGV; #get the input file and output file names
7
8
9
use Metacat;
10
use XML::DOM;
11
12
my $metacat = Metacat->new();
13
14
15
if ($metacat) {
16
    $metacat->set_options( metacatUrl => $url );
17
} else {
18
#print "Failed during metacat creation.";
19
    $error = 1;
20
    exit();
21
}
22
23
# Login to metacat
24
# //print "Logging in to metacat..........\n";
25
my $response1 = $metacat->login($username, $password);
26
if (! $response1) {
27
#    //print $metacat->getMessage();
28
#    //print "Failed during login: metacat.\n";
29
    $error = 2;
30
} else {
31
#    //print "Logged in.\n";
32
}
33
34
35
my $query = "<?xml version=\"1.0\" ?> <pathquery version=\"1.2\">  <querytitle>Untitled-Search-2</querytitle>  <returndoctype>-//ecoinformatics.org//eml-dataset-2.0.0beta6//EN</returndoctype> <returndoctype>-//NCEAS//eml-dataset-2.0//EN</returndoctype>  <returndoctype>eml://ecoinformatics.org/eml-2.0.0</returndoctype>  <returnfield>dataset/title</returnfield>  <returnfield>individualName/surName</returnfield> <returnfield>keyword</returnfield><returnfield>westBoundingCoordinate</returnfield><returnfield>eastBoundingCoordinate</returnfield><returnfield>northBoundingCoordinate</returnfield><returnfield>southBoundingCoordinate</returnfield><returnfield>westbc</returnfield><returnfield>eastbc</returnfield><returnfield>northbc</returnfield><returnfield>southbc</returnfield><querygroup operator=\"INTERSECT\"><querygroup operator=\"UNION\"><querygroup operator=\"UNION\"><queryterm searchmode=\"contains\" casesensitive=\"false\"><value>%25</value></queryterm></querygroup></querygroup></querygroup></pathquery>";
36
37
my $response = $metacat->squery($query);
38
39
my $mesg =$metacat->getMessage();
40
41
#print "\n\ngetting the message ... \n";
42
#print $mesg;
43
44
if($mesg eq ""){
45
#    print ("Too much time is reply back from metacat...");
46
    exit();
47
}
48
49
my $parser = new XML::DOM::Parser;
50
my $node;
51
my $name;
52
my $doc = $parser->parse($mesg);
53
my $nodes = $doc->getElementsByTagName("docid");
54
55
$numberNodes = $nodes->getLength;
56
57
58
for (my $loop_index =0; $loop_index < $numberNodes; $loop_index++)
59
{
60
    $node = $nodes->item($loop_index);
61 2638 harris
    $name =  trimwhitespace($node->getFirstChild()->getNodeValue());
62 2563 harris
63
    $node = $node->getParentNode();
64
    my $tempnodes = $node->getElementsByTagName("param");
65
    my $tempnumberNodes = $tempnodes->getLength;
66
67
    my $title = "";
68
    my $keyword = "";
69
    my $cName = "";
70
    my $eBC = "";
71
    my $wBC = "";
72
    my $nBC = "";
73
    my $sBC = "";
74
75
 for (my $loop =0; $loop < $tempnumberNodes; $loop++)
76
 {
77
	my $tempnode = $tempnodes->item($loop);
78
	my $paramname = $tempnode->getAttributeNode("name")->getValue();
79
	if($paramname eq "dataset/title"){
80 2638 harris
	    $title = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
81 2563 harris
	}
82
	if($paramname eq "keyword"){
83 2638 harris
	    $keyword = trimwhitespace($keyword.",".$tempnode->getFirstChild()->getNodeValue());
84 2563 harris
	}
85
	if($paramname eq "individualName/surName"){
86 2638 harris
	    $cName = trimwhitespace($cName.",".$tempnode->getFirstChild()->getNodeValue());
87 2563 harris
	}
88
	if($paramname eq "eastBoundingCoordinate"){
89 2638 harris
	    $eBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
90 2563 harris
	}
91
	if($paramname eq "eastbc"){
92 2638 harris
	    $eBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
93 2563 harris
	}
94
	if($paramname eq "westBoundingCoordinate"){
95 2638 harris
	    $wBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
96 2563 harris
	}
97
	if($paramname eq "westbc"){
98 2638 harris
	    $wBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
99 2563 harris
	}
100
	if($paramname eq "northBoundingCoordinate"){
101 2638 harris
	    $nBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
102 2563 harris
	}
103
	if($paramname eq "northbc"){
104 2638 harris
	    $nBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
105 2563 harris
	}
106
	if($paramname eq "southBoundingCoordinate"){
107 2638 harris
	    $sBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
108 2563 harris
	}
109
	if($paramname eq "southbc"){
110 2638 harris
	    $sBC = trimwhitespace($tempnode->getFirstChild()->getNodeValue());
111 2563 harris
	}
112
    }
113
114
    if($keyword ne "" ){
115
	$keyword = substr ($keyword, 1);
116
    }
117
    if($cName ne "" ){
118
	$cName = substr ($cName, 1);
119
    }
120
121
  #  print "$name, $title, ($cName), ($keyword), ($eBC,$wBC,$nBC,$sBC), $url?action=read&docid=$name&qformat=knb, \n";
122 2638 harris
  # print trimwhitespace($eBC) +  " \n";
123 2563 harris
 if ($eBC ne "" && $nBC ne "" && $eBC ne "0" &&  $nBC ne "0") {
124 2638 harris
    print "$name $wBC $eBC  $sBC  $nBC $url?action=read&docid=$name&qformat=knb \n";
125 2563 harris
 }
126
}
127
128 2638 harris
129
# Remove whitespace from the start and end of the string
130
sub trimwhitespace($)
131
{
132
  my $string = shift;
133
  $string =~ s/^\s+//;
134
  $string =~ s/\s+$//;
135
  return $string;
136
}
137 2563 harris
#print $numberNodes;