Modified clone-dist about copying project's source info. 73/16073/1
authorSungmin Kim <dev.sungmin.kim@samsung.com>
Thu, 6 Feb 2014 07:07:20 +0000 (16:07 +0900)
committerSungmin Kim <dev.sungmin.kim@samsung.com>
Thu, 6 Feb 2014 07:07:20 +0000 (16:07 +0900)
Signed-off-by: Sungmin Kim <dev.sungmin.kim@samsung.com>
Change-Id: I6b5bd8db67749352ba7cc4b972c0b96d277ad8d9

src/build_server/BuildServer.rb
src/build_server/CommonProject.rb
src/build_server/DistributionManager.rb
src/build_server/ProjectManager.rb

index 8159be1..e38a2a3 100644 (file)
@@ -1076,7 +1076,7 @@ class BuildServer
                rescue DBI::InterfaceError => e
                        raise BuildServerException.new("ERR950"), e.errstr
                rescue => e
-                       @log.error e.errstr if not @log.nil?
+                       @log.error e.message if not @log.nil?
                        @log.error e.backtrace.inspect if not @log.nil?
                end
 
index a8cb9cb..cc03520 100644 (file)
@@ -378,4 +378,13 @@ class CommonProject
                end
                return result
        end
+
+       public
+       def self.get_project_rows_in_distribution(db, distribution_name)
+               result = []
+               db.select_all("SELECT projects.name,distributions.name as dist_name,projects.ptype FROM projects,distributions WHERE projects.distribution_id=distributions.id AND distributions.name = '#{distribution_name}'") do |row|
+                       result.push row.to_h
+               end
+               return result
+       end
 end
index e403586..d16158f 100644 (file)
@@ -220,22 +220,23 @@ class DistributionManager
                                        @server.log.info "Added a new distribution \"#{target_name}\""
 
                     #Get project list
-                    projects = @server.prjmgr.get_all_projects()
+                    projects = @server.prjmgr.get_projects_in_distribution(origin_name)
 
                     #Add project
                     projects.each do |prj|
                         if prj.type.eql? "GIT" then
                             @server.prjmgr.add_git_project(prj.name, prj.repository, prj.branch, prj.os_list, target_name)
-
-                            source = prj.get_latest_source_info(db)
-                            if not source.nil? then
-                                new_prj = @server.prjmgr.get_project(prj.name, target_name)
-                                           db.do "INSERT INTO sources(project_id, pkg_ver,location) 
-                                               VALUES(#{new_prj.prj_id},'#{source["pkg_ver"]}','#{source["location"]}')"
-                            end
                         elsif prj.type.eql? "BINARY" then
                             @server.prjmgr.add_binary_project(prj.name, prj.pkg_name, prj.os_list, target_name)
                         end
+                        
+                        # copy source info
+                        source_cnt = db.select_one("SELECT count(*) val FROM sources WHERE project_id =#{prj.prj_id}")[0]
+                        if( source_cnt > 0 )
+                            new_prj = @server.prjmgr.get_project(prj.name, target_name)
+                                       db.do "INSERT INTO sources(project_id, pkg_ver,location) 
+                                               SELECT #{new_prj.prj_id}, pkg_ver, location FROM sources WHERE project_id = #{prj.prj_id}"
+                        end
                     end
 
                                        result = true
@@ -247,7 +248,7 @@ class DistributionManager
                        end
                rescue => e
                        if not @server.log.nil? then
-                               @server.log.error e.errstr
+                               @server.log.error e.message
                        end
                end
                return result
index 720a93c..b3505cc 100644 (file)
@@ -99,6 +99,37 @@ class ProjectManager
        #name get_all_project
        #return project list
        #return [] when DB error occurred
+       def get_projects_in_distribution(distribution_name)
+               result = []
+               begin
+                       @server.get_db_connection() do |db|
+                               rows = CommonProject.get_project_rows_in_distribution(db, distribution_name)
+                               rows.each do |row|
+                                       if row['ptype'] == "GIT" then
+                                               prj = GitBuildProject.load(row['name'], row['dist_name'], @server, db)
+                                       else
+                                               prj = BinaryUploadProject.load(row['name'], row['dist_name'], @server, db)
+                                       end
+                                       if not prj.nil? then result.push prj end
+                               end
+                       end
+               rescue BuildServerException => e
+                       if not @server.log.nil? then
+                               @server.log.error e.message
+                       end
+               rescue => e
+                       if not @server.log.nil? then
+                               @server.log.error e.errstr
+                       end
+               end
+
+               return result
+       end
+
+    
+       #name get_all_project
+       #return project list
+       #return [] when DB error occurred
        def get_all_projects()
                result = []
                begin