--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bldsystemtools/commonbldutils/GenResult/Changelists.pm Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,97 @@
+# Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Script that return a list of Perforce Change lists that are associated to a build snapshot.
+#
+#
+package Changelists;
+use DBI;
+my $dbh; #connection handle
+sub connectDB()
+{
+ my $dBase = "autobuild2";
+ my $serverPort = "intweb:3306";
+ my $user = "autobuild2";
+ my $password = "autobuild2";
+ $dbh->disconnect if ($dbh); #disconnect if already connected
+ $dbh = DBI->connect("DBI:mysql:$dBase:$serverPort", $user, $password, {PrintError => 0, RaiseError => 0}); # should use a username which has read-only credentials only.
+ if (!$dbh)
+ {
+ print "Cannot connect to the AutoBuild2 server:$DBI::errstr\n";
+ exit;
+ }
+ else
+ {
+ print "Connected to AutoBuild\n";
+ }
+}
+
+
+sub queryHandler #handle querying the database.
+{
+ my $query = shift;
+ my $handle;
+ $handle = $dbh->prepare($query);
+ $handle->execute;
+ if($handle->err())
+ {
+ Logit(2,"could not execute Query:".$handle->errstr());
+ if ($handle->errstr() =~ m/(Lost connection|MySQL server has gone away)/i) #sometimes the connection to server is lost,
+ {
+ Logit(0,"Lost connection, ".$handle->errstr());
+ exit;
+ }
+ }
+ return $handle;
+}
+
+my $snapshot = $ENV{SnapshotNumber};
+my $buildShortName = $ENV{BuildShortName};
+sub main {
+
+ print "$snapshot \t $buildShortName\n";
+ my $query = "select distinct(sub3.changelist), snap.name as Name, sub3.description as Description
+ from codeline, Submission as sub, Submission as sub3
+ left join Snapshot as snap on (snap.Submission_id = sub.id )
+ left join Build as bld on (bld.Snapshot_id = snap.id)
+ left join Spec as spec on (bld.Spec_id = spec.id)
+ left join Product as prod on (spec.Product_id = prod.id)
+ left join Build as bld2 on (bld2.id = bld.BCPrevious_id)
+ left join Snapshot as snap2 on (bld2.Snapshot_id = snap2.id)
+ left join Submission as sub2 on (snap2.Submission_id = sub2.id)
+ where snap.name = \"$snapshot\" and prod.build_short_name=\"$buildShortName\" and sub3.Codeline_id = (SELECT codeline_id FROM `spec` , codeline cl where Product_id=(select id from product where build_short_name = \"$buildShortName\") and pool_id = \"1\" and cl.name = \"MCLsfRO\" and spec.codeline_id= cl.id and end_date > CURDATE() ORDER by spec.id LIMIT 1) and sub3.changelist between sub2.changelist and sub.changelist order by sub3.changelist;";
+
+ &connectDB();
+ my $ClInfo = &queryHandler($query);
+ my @AllCls = ();
+ my %CLhash = ();
+ while (my $Data = $ClInfo->fetchrow_hashref)
+ {
+ my @Cl = ();
+ my $changelist = ${$Data}{'changelist'};
+ my ($submitter) = ${$Data}{'Description'} =~ /<detail submitter=\s*\"(.*?)\"/;
+ my ($team) = ${$Data}{'Description'} =~ /<detail team=\s*\"(.*?)\"/;
+ my ($sub_time) = ${$Data}{'Description'} =~ /<detail submissionTime=\s*\"(.*?)\"/;
+ ${$Data}{'Description'} =~ s/\n/##/g;
+ my ($desc) = ${$Data}{'Description'} =~ /<EXTERNAL>####(.*?)####<\/EXTERNAL>/i;
+ $desc =~ s/##/\n/g;
+ $CLhash{$changelist}{'submitter'} = $submitter;
+ $CLhash{$changelist}{'team'} = $team;
+ $CLhash{$changelist}{'sub_time'} = $sub_time;
+ $CLhash{$changelist}{'desc'} = $desc;
+ #~ print "#################${$Data}{'changelist'}#####################\n";
+ #~ print "$submitter\t$team\t$sub_time\n$desc\n";
+ }
+ return (\%CLhash);
+}
+1;