import static net.jaekl.cfb.db.Column.Null.*;
import static net.jaekl.cfb.db.Column.Type.*;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import net.jaekl.cfb.analyze.MessageMap;
import net.jaekl.cfb.db.driver.DbDriver;
public class CfbSchema extends Schema {
+ MessageMap m_msgMap;
+
+ public static final Sequence BUG_SEQ = new Sequence("BUG_SEQ");
+ public static final Sequence CATEGORY_SEQ = new Sequence("CATEGORY_SEQ");
+ public static final Sequence FOUND_SEQ = new Sequence("FOUND_SEQ");
+ public static final Sequence LOC_SEQ = new Sequence("LOC_SEQ");
+ public static final Sequence RUN_SEQ = new Sequence("RUN_SEQ");
+
+ public static final String BUGID = "BUGID";
+ public static final String CATEGORYID = "CATEGORYID";
+ public static final String FOUNDID = "FOUNDID";
+ public static final String LOCID = "LOCID";
+ public static final String RUNID = "RUNID";
+
// Define each table as follows:
// {
// { table_name },
// { column_name, type, width (-1 for default), null/not_null }
// }
- private static final Object[][][] TABLES = {
- {
- // Description of each possible bug
- { "BUG" },
- { "BUGID", INTEGER, -1, NOT_NULL },
- { "TYPE", VARCHAR, 80, NOT_NULL }
- },
- {
- // Description of each possible bug category
- { "CATEGORY" },
- { "CATEGORYID", INTEGER, -1, NOT_NULL },
- { "CATEGORY", VARCHAR, 80, NOT_NULL }
- },
- {
- // One BugInstance, found during an analysis
- { "FOUND" },
- { "FOUNDID", INTEGER, -1, NOT_NULL },
- { "BUGID", INTEGER, -1, NOT_NULL },
- { "CATEGORYID", INTEGER, -1, NOT_NULL },
- { "FIRSTLOCID", INTEGER, -1, NOT_NULL },
- { "SECONDLOCID", INTEGER, -1, NULL },
- { "THIRDLOCID", INTEGER, -1, NULL }
- },
- {
- // Location in the source code referenced by a BugInstance
- { "LOCATION" },
- { "LOCID", INTEGER, -1, NOT_NULL },
- { "CLASSNAME", VARCHAR, 256, NOT_NULL },
- { "STARTLINE", INTEGER, -1, NULL },
- { "ENDLINE", INTEGER, -1, NULL }
- },
- {
- // Runs of FindBugs, normally one per build version
- { "RUN" },
- { "RUNID", INTEGER, -1, NOT_NULL },
- { "VERSION", VARCHAR, 32, NULL },
- { "STARTTIME", TIMESTAMPTZ, -1, NOT_NULL },
- { "ENDTIME", TIMESTAMPTZ, -1, NOT_NULL }
- }
- };
+ private static final Object[][] BUGS_DEFN =
+ {
+ // Description of each possible bug
+ { "BUG" },
+ { BUGID, INTEGER, -1, NOT_NULL },
+ { "TYPE", VARCHAR, 80, NOT_NULL }
+ };
+ private static final Object[][] CATEGORIES_DEFN =
+ {
+ // Description of each possible bug category
+ { "CATEGORY" },
+ { CATEGORYID, INTEGER, -1, NOT_NULL },
+ { "CATEGORY", VARCHAR, 80, NOT_NULL }
+ };
+ private static final Object[][] FOUND_DEFN =
+ {
+ // One BugInstance, found during an analysis
+ { "FOUND" },
+ { FOUNDID, INTEGER, -1, NOT_NULL },
+ { "BUGID", INTEGER, -1, NOT_NULL },
+ { "CATEGORYID", INTEGER, -1, NOT_NULL },
+ { "FIRSTLOCID", INTEGER, -1, NOT_NULL },
+ { "SECONDLOCID", INTEGER, -1, NULL },
+ { "THIRDLOCID", INTEGER, -1, NULL }
+ };
+ private static final Object[][] LOCATIONS_DEFN =
+ {
+ // Location in the source code referenced by a BugInstance
+ { "LOCATION" },
+ { LOCID, INTEGER, -1, NOT_NULL },
+ { "CLASSNAME", VARCHAR, 256, NOT_NULL },
+ { "STARTLINE", INTEGER, -1, NULL },
+ { "ENDLINE", INTEGER, -1, NULL }
+ };
+ private static final Object[][] RUNS_DEFN =
+ {
+ // Runs of FindBugs, normally one per build version
+ { "RUN" },
+ { RUNID, INTEGER, -1, NOT_NULL },
+ { "VERSION", VARCHAR, 32, NULL },
+ { "STARTTIME", TIMESTAMPTZ, -1, NOT_NULL },
+ { "ENDTIME", TIMESTAMPTZ, -1, NOT_NULL }
+ };
+
+ public static final Table BUGS = Table.construct(BUGS_DEFN);
+ public static final Table CATEGORIES = Table.construct(CATEGORIES_DEFN);
+ public static final Table FOUND = Table.construct(FOUND_DEFN);
+ public static final Table LOCATIONS = Table.construct(LOCATIONS_DEFN);
+ public static final Table RUNS = Table.construct(RUNS_DEFN);
+
+ private static final Sequence[] SEQUENCES = {
+ BUG_SEQ,
+ CATEGORY_SEQ,
+ FOUND_SEQ,
+ LOC_SEQ,
+ RUN_SEQ
+ };
+
+ private static final Table[] TABLES = {
+ BUGS,
+ CATEGORIES,
+ FOUND,
+ LOCATIONS,
+ RUNS
+ };
public CfbSchema(DbDriver driver) {
super("CFB", driver);
+
+ m_msgMap = null;
addTables(TABLES);
- }
+ addSequences(SEQUENCES);
+ }
+
+ public void setMessageMap(MessageMap msgMap) {
+ m_msgMap = msgMap;
+ }
+
+ @Override
+ boolean postCreationInit(Connection con) throws SQLException {
+ assert(null != m_msgMap);
+
+
+
+ return true;
+ }
}