import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
+import java.util.Locale;
+import net.jaekl.cfb.CfbBundle;
import net.jaekl.cfb.analyze.Analysis;
import net.jaekl.cfb.db.CfbSchema;
import net.jaekl.cfb.db.Column;
import net.jaekl.cfb.xml.BugCollection;
import net.jaekl.cfb.xml.BugInstance;
import net.jaekl.cfb.xml.LocalVariable;
+import net.jaekl.cfb.xml.messages.BugCategory;
+import net.jaekl.cfb.xml.messages.BugPattern;
import net.jaekl.cfb.xml.messages.MessageCollection;
public class DbStore {
return getAnalysis(priorId);
}
- public boolean put(Analysis analysis) throws SQLException, TypeMismatchException {
+ public boolean put(Analysis analysis) throws SQLException, TypeMismatchException, StoreException {
+ CfbBundle bundle = CfbBundle.getInst(Locale.getDefault());
+
if (null == analysis) {
return false;
}
Object[][] values = {
{
Long.valueOf(runId),
+ analysis.getProjectName(),
analysis.getBuildNumber(),
analysis.getStart(),
analysis.getEnd()
Location secondLoc = (locs.size() > 1) ? locs.get(1) : null;
Location thirdLoc = (locs.size() > 2) ? locs.get(2) : null;
+ if (BugPattern.UNKNOWN.getId() == bugId) {
+ throw new StoreException(bundle.get(CfbBundle.BUG_TYPE_UNKNOWN, ""+bug.getType()));
+ }
+ if (BugCategory.UNKNOWN.getId() == categoryId) {
+ throw new StoreException(bundle.get(CfbBundle.BUG_CATEGORY_UNKNOWN, ""+bug.getCategory()));
+ }
+
values[row][0] = foundId;
values[row][1] = runId;
values[row][2] = bugId;
{
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;
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, analysisId, Operation.EQUAL ) };
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);
+ Analysis prior = new Analysis(projName, version);
prior.setId(analysisId.longValue());
prior.setStart(start);
prior.setEnd(end);