bldsystemtools/commonbldutils/GenResult/Changelists.pm
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /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;