Add the concept of "Project Name" to the RUNS table in the database.
[cfb.git] / prod / net / jaekl / cfb / store / DbStore.java
index 69ea8bbafaeb405ce06ce3387e2f9caa3f490678..3860ca5637e5c2fd31f93bec95b1d59900dec6d5 100644 (file)
@@ -54,6 +54,7 @@ public class DbStore {
                Object[][] values = { 
                                                                {
                                                                        Long.valueOf(runId),
+                                                                       analysis.getProjectName(),
                                                                        analysis.getBuildNumber(),
                                                                        analysis.getStart(),
                                                                        analysis.getEnd() 
@@ -119,6 +120,10 @@ public class DbStore {
        
        Location getLoc(Long locId) throws SQLException, TypeMismatchException
        {
+               if (null == locId) {
+                       return null;
+               }
+               
                Column[] columns = { CfbSchema.CLASSNAME, CfbSchema.METHODNAME, CfbSchema.METHODROLE, CfbSchema.STARTLINE, CfbSchema.ENDLINE };
                Table[] tables = { CfbSchema.LOCATIONS };
                Condition[] conditions = { new Condition(CfbSchema.LOCID, locId, Operation.EQUAL) };
@@ -128,8 +133,8 @@ public class DbStore {
                String className = row.getString(0);
                String methodName = row.getString(1);
                String methodRole = row.getString(2);
-               long startLine = row.getLong(3);
-               long endLine = row.getLong(4);
+               Integer startLine = row.getInt(3);
+               Integer endLine = row.getInt(4);
                
                Location loc = new Location(locId, className, methodName, methodRole, startLine, endLine);
                return loc;
@@ -206,6 +211,10 @@ public class DbStore {
        
        LocalVariable getVar(Long varId) throws SQLException, TypeMismatchException
        {
+               if (null == varId) {
+                       return null;
+               }
+               
                Column[] columns = { CfbSchema.NAME, CfbSchema.VARROLE };
                Table[] tables = { CfbSchema.VARIABLES };
                Condition[] conditions = { new Condition(CfbSchema.VARID_PK, varId, Operation.EQUAL) };
@@ -279,7 +288,10 @@ public class DbStore {
        {
                Column[] columns = { CfbSchema.RUNID };
                Table[] tables = { CfbSchema.RUNS };
-               Condition[] conditions = { new Condition( CfbSchema.STARTTIME, analysis.getStart(), Operation.LESS_THAN ) };
+               Condition[] conditions = {
+                       new Condition( CfbSchema.PROJNAME, analysis.getProjectName(), Operation.EQUAL ),
+                       new Condition( CfbSchema.STARTTIME, analysis.getStart(), Operation.LESS_THAN ) 
+               };
                Sort[] sorts = { new Sort( CfbSchema.STARTTIME, Sort.Direction.DESCENDING ) };
                int limit = 1;
                
@@ -290,11 +302,11 @@ public class DbStore {
                return rows.get(0).getLong(0);
        }
        
-       Analysis getAnalysis(Long priorId) throws SQLException, TypeMismatchException
+       Analysis getAnalysis(Long analysisId) throws SQLException, TypeMismatchException
        {
-               Column[] columns = { CfbSchema.VERSION, CfbSchema.STARTTIME, CfbSchema.ENDTIME };
+               Column[] columns = { CfbSchema.PROJNAME, CfbSchema.VERSION, CfbSchema.STARTTIME, CfbSchema.ENDTIME };
                Table[] tables = { CfbSchema.RUNS };
-               Condition[] conditions = { new Condition( CfbSchema.RUNID, priorId, Operation.EQUAL ) };
+               Condition[] conditions = { new Condition( CfbSchema.RUNID, analysisId, Operation.EQUAL ) };
                
                List<Row> rows = m_driver.select(m_con, columns, tables, conditions);
                if (rows.size() < 1) {
@@ -303,16 +315,17 @@ public class DbStore {
                
                Row row = rows.get(0);
                
-               String version = row.getString(0);
-               java.util.Date start= row.getDate(1);
-               java.util.Date end = row.getDate(2);
+               String projName = row.getString(0);
+               String version = row.getString(1);
+               java.util.Date start= row.getDate(2);
+               java.util.Date end = row.getDate(3);
                
-               Analysis prior = new Analysis(version);
-               prior.setId(priorId.longValue());
+               Analysis prior = new Analysis(projName, version);
+               prior.setId(analysisId.longValue());
                prior.setStart(start);
                prior.setEnd(end);
                
-               prior.setBugCollection(getBugCollection(priorId));
+               prior.setBugCollection(getBugCollection(analysisId));
                
                return prior;
        }
@@ -341,21 +354,21 @@ public class DbStore {
                
                for (Row row : rows) {
                        // long foundId = row.getLong(0);
-                       long bugId = row.getLong(1);
-                       long categoryId = row.getLong(2);
-                       long firstLocId = row.getLong(3);
-                       long secondLocId = row.getLong(4);
-                       long thirdLocId = row.getLong(5);
-                       long varId = row.getLong(6);
+                       Long bugId = row.getLong(1);
+                       Long categoryId = row.getLong(2);
+                       Long firstLocId = row.getLong(3);
+                       Long secondLocId = row.getLong(4);
+                       Long thirdLocId = row.getLong(5);
+                       Long varId = row.getLong(6);
                        
                        String bugType = getBugType(bugId);
                        String category = getCategoryName(categoryId);
                        Location[] locations = { getLoc(firstLocId), getLoc(secondLocId), getLoc(thirdLocId) };
-                       LocalVariable[] vars = { getVar(Long.valueOf(varId)) };
+                       LocalVariable[] vars = { getVar(varId) };
 
                        
                        BugInstance bug = new BugInstance(bugId, category, bugType, locations, vars);
-                       coll.getBugs().add(bug);
+                       coll.add(bug);
                }
                
                return coll;