class DbProj: def __init__(self, proj=None, lang=None): self.project = proj self.language = lang self.projects = [] def __str__(self): print_str = "" for p in self.projects: print_str += str(p) return print_str def connectDb(self, db, dbUser, dbHost, dbPort): self.dbCon = DatabaseCon(db, dbUser, dbHost, dbPort) def fetchDatesFromTable(self, table): sql_command = "SELECT tag, project, min(commit_date), max(commit_date)" sql_command += " FROM " + table + " Where tag like \'" + self.language + "\'" sql_command += " and project = \'" + self.project + "\' group by tag, project" print sql_command rows = self.dbCon.execute(sql_command) for row in rows: language, project, commit_date_min, commit_date_max = row p = proj(language, project, commit_date_min, commit_date_max) self.projects.append(p) def countCommitBetweenDates(self, table, snapshot1, snapshot2): snapshot1 = "'" + snapshot1 + "'" snapshot2 = "'" + snapshot2 + "'" sql_command = "SELECT distinct file_name, sha" sql_command += " FROM " + table + " Where tag like \'" + self.language + "\'" sql_command += " and project = \'" + self.project + "\' and commit_date >= " \ + snapshot1 + " and commit_date < " + snapshot2 #print sql_command rows = self.dbCon.execute(sql_command) return len(rows) def printCommitDates(self): for p in self.projects: print p
class DbProj: def __init__(self, proj=None, lang=None): self.project = proj self.language = lang self.projects = [] def __str__(self): print_str = "" for p in self.projects: print_str += str(p) return print_str def connectDb(self, db, dbUser, dbHost, dbPort): self.dbCon = DatabaseCon(db, dbUser, dbHost, dbPort) def fetchDatesFromTable(self, table): sql_command = "SELECT tag, project, min(commit_date), max(commit_date)" sql_command += " FROM " + table + " Where tag like \'" + self.language + "\'" sql_command += " and project = \'" + self.project + "\' group by tag, project" print sql_command rows = self.dbCon.execute(sql_command) for row in rows: language, project, commit_date_min, commit_date_max = row p = proj(language, project, commit_date_min, commit_date_max) self.projects.append(p) def countCommitBetweenDates(self, table, snapshot1, snapshot2): snapshot1 = "'" + snapshot1 + "'" snapshot2 = "'" + snapshot2 + "'" sql_command = "SELECT distinct file_name, sha" sql_command += " FROM " + table + " Where tag like \'" + self.language + "\'" sql_command += " and project = \'" + self.project + "\' and commit_date >= " \ + snapshot1 + " and commit_date < " + snapshot2 #print sql_command rows = self.dbCon.execute(sql_command) return len(rows) def printCommitDates(self): for p in self.projects: print p
class DbEdits: def __init__(self, proj, lang): self.project = proj self.language = lang self.edits = [] def __str__(self): print_str = "" for e in self.edits: print_str += str(e) return print_str def connectDb(self, db, dbUser, dbHost, dbPort): self.dbCon = DatabaseCon(db, dbUser, dbHost, dbPort) def fetchEditsFromTable(self, table): sql_command = "SELECT project, file_name, sha, commit_date, isbug, is_test " sql_command += " FROM " + table + " WHERE tag = \'" + self.language + \ "\' and project = \'" + self.project + "\'" print sql_command rows = self.dbCon.execute(sql_command) for row in rows: project, file_name, sha, commit_date, isbug, is_test = row e = edit(project, file_name, is_test, sha, commit_date, isbug) self.edits.append(e) def printEdits(self): for e in self.edits: print e
class DbAll_changes: def __init__(self, proj=None, lang=None): self.project = proj self.language = lang self.projects = [] def __str__(self): print_str = "" for p in self.projects: print_str += str(p) return print_str def connectDb(self, db, dbUser, dbHost, dbPort): self.dbCon = DatabaseCon(db, dbUser, dbHost, dbPort) def fetchDatesFromTable(self, table): sql_command = "SELECT language, project, min(commit_date), max(commit_date)" sql_command += " FROM " + table + " Where language iLike \'" + self.language + "\'" sql_command += " and project = \'" + self.project + "\' group by language, project" print sql_command rows = self.dbCon.execute(sql_command) for row in rows: language, project, commit_date_min, commit_date_max = row p = proj(language, project, commit_date_min, commit_date_max) self.projects.append(p) def printCommitDates(self): for p in self.projects: print p
class DbEdits: def __init__(self, proj, lang): self.project = proj self.language = lang self.edits = [] def __str__(self): print_str = "" for e in self.edits: print_str += str(e) return print_str def connectDb(self, db, dbUser, dbHost, dbPort): self.dbCon = DatabaseCon(db, dbUser, dbHost, dbPort) def fetchEditsFromTable(self, table): sql_command = "SELECT project, file_name, sha, commit_date, isbug, is_test " sql_command += " FROM " + table + " WHERE tag = \'" + self.language + \ "\' and project = \'" + self.project + "\'" print sql_command rows = self.dbCon.execute(sql_command) for row in rows: project, file_name, sha, commit_date, isbug, is_test = row e = edit(project, file_name, is_test, sha, commit_date, isbug) self.edits.append(e) def printEdits(self): for e in self.edits: print e