1 package net.jaekl.cfb.db;
3 // Copyright (C) 2015 Christian Jaekl
5 import static net.jaekl.cfb.db.Column.Null.*;
6 import static net.jaekl.cfb.db.Column.Type.*;
8 import java.sql.Connection;
9 import java.sql.SQLException;
11 import net.jaekl.cfb.analyze.MessageMap;
12 import net.jaekl.cfb.db.driver.DbDriver;
15 public class CfbSchema extends Schema {
18 public static final Sequence BUG_SEQ = new Sequence("BUG_SEQ");
19 public static final Sequence CATEGORY_SEQ = new Sequence("CATEGORY_SEQ");
20 public static final Sequence FOUND_SEQ = new Sequence("FOUND_SEQ");
21 public static final Sequence LOC_SEQ = new Sequence("LOC_SEQ");
22 public static final Sequence RUN_SEQ = new Sequence("RUN_SEQ");
24 public static final String BUGID = "BUGID";
25 public static final String CATEGORYID = "CATEGORYID";
26 public static final String FOUNDID = "FOUNDID";
27 public static final String LOCID = "LOCID";
28 public static final String RUNID = "RUNID";
30 // Define each table as follows:
33 // { column_name, type, width (-1 for default), null/not_null }
35 private static final Object[][] BUGS_DEFN =
37 // Description of each possible bug
39 { BUGID, INTEGER, -1, NOT_NULL },
40 { "TYPE", VARCHAR, 80, NOT_NULL }
42 private static final Object[][] CATEGORIES_DEFN =
44 // Description of each possible bug category
46 { CATEGORYID, INTEGER, -1, NOT_NULL },
47 { "CATEGORY", VARCHAR, 80, NOT_NULL }
49 private static final Object[][] FOUND_DEFN =
51 // One BugInstance, found during an analysis
53 { FOUNDID, INTEGER, -1, NOT_NULL },
54 { "BUGID", INTEGER, -1, NOT_NULL },
55 { "CATEGORYID", INTEGER, -1, NOT_NULL },
56 { "FIRSTLOCID", INTEGER, -1, NOT_NULL },
57 { "SECONDLOCID", INTEGER, -1, NULL },
58 { "THIRDLOCID", INTEGER, -1, NULL }
60 private static final Object[][] LOCATIONS_DEFN =
62 // Location in the source code referenced by a BugInstance
64 { LOCID, INTEGER, -1, NOT_NULL },
65 { "CLASSNAME", VARCHAR, 256, NOT_NULL },
66 { "STARTLINE", INTEGER, -1, NULL },
67 { "ENDLINE", INTEGER, -1, NULL }
69 private static final Object[][] RUNS_DEFN =
71 // Runs of FindBugs, normally one per build version
73 { RUNID, INTEGER, -1, NOT_NULL },
74 { "VERSION", VARCHAR, 32, NULL },
75 { "STARTTIME", TIMESTAMPTZ, -1, NOT_NULL },
76 { "ENDTIME", TIMESTAMPTZ, -1, NOT_NULL }
79 public static final Table BUGS = Table.construct(BUGS_DEFN);
80 public static final Table CATEGORIES = Table.construct(CATEGORIES_DEFN);
81 public static final Table FOUND = Table.construct(FOUND_DEFN);
82 public static final Table LOCATIONS = Table.construct(LOCATIONS_DEFN);
83 public static final Table RUNS = Table.construct(RUNS_DEFN);
85 private static final Sequence[] SEQUENCES = {
93 private static final Table[] TABLES = {
101 public CfbSchema(DbDriver driver) {
102 super("CFB", driver);
107 addSequences(SEQUENCES);
110 public void setMessageMap(MessageMap msgMap) {
115 boolean postCreationInit(Connection con) throws SQLException {
116 assert(null != m_msgMap);