diff scripts/migration/versions_source_ @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/migration/versions_source_	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+# TODO: 
+# the script still has the namespaces "1902.1" and "10.7910" hard-coded, 
+# to identifies the "local" studies. 
+
+my $url = shift @ARGV;
+
+use DBI;
+
+my $username = "xxxxx";
+my $password = 'xxxxx';
+my $database = "xxxxx";
+
+my $dbh = DBI->connect("DBI:Pg:dbname=$database;host=$host",$username,$password); 
+
+unless ( -d "ddi" )
+{
+    mkdir "ddi"; 
+}
+
+my $sth;
+
+$sth = $dbh->prepare(qq {SELECT s.id, s.authority, s.studyid, v.alias FROM study s, vdc v WHERE s.owner_id = v.id});
+
+$sth->execute();
+
+my $sid; 
+
+$studycounter = 0; 
+$extraversioncounter = 0; 
+$versioncounter = 0; 
+
+while ( @foo = $sth->fetchrow() )
+{
+    $sid = $foo[0];
+    $authority = $foo[1];
+    $studyid = $foo[2];
+    $dvalias = $foo[3];
+    
+    unless ($authority eq "1902.1" || $authority =~/^10\.7910/ ) {
+	next;
+    }
+
+    unless ( -d "ddi/$dvalias" )
+    {
+	mkdir "ddi/$dvalias"; 
+    }
+
+    my $sth1; 
+
+    $sth1 = $dbh->prepare(qq {SELECT versionnumber,versionstate FROM studyversion v WHERE study_id=$sid}); 
+    $sth1->execute();
+
+    my $vn; 
+
+    $localcounter = 0; 
+
+    while ( @bar = $sth1->fetchrow() )
+    {
+	$vn = $bar[0];
+	$vstate = $bar[1];
+
+	if ($vstate eq "RELEASED")
+	{
+	    print $dvalias . "\t" . $sid . "\t" . $authority . "/" . $studyid . "/export_ddi.xml\n";
+	}
+	else
+	{
+	    print STDERR "executing: wget -O ddi/" . $dvalias . "/" . $sid . "-" . $vn . ".xml '" . $url . "?studyId=" . $sid . "&versionNumber=" . $vn . "'\n";
+	    system "wget -O ddi/" . $dvalias . "/" . $sid . "-" . $vn . ".xml '" . $url . "?studyId=" . $sid . "&versionNumber=" . $vn . "'\n";
+	    $versioncounter++; 
+	    $localcounter++;
+	}
+    }
+
+    $sth1->finish; 
+    $studycounter++; 
+    $extraversioncounter++ if $localcounter;
+
+    unless ($studycounter % 1000) 
+    {
+	print STDERR "\n" . $studycounter . " studies processed.\n";
+	print STDERR $extraversioncounter . " had versions other than released;\n";
+	print STDERR "Total " . $versioncounter . " versions processed.\n";
+    }
+} 
+
+$sth->finish;
+
+$dbh->disconnect; 
+
+exit 0; 
+
+
+
+
+