Java Reference
In-Depth Information
public class Database {
private static final String SOURCE = "shakespeare.txt";
private static final String SCHEMA = "shakespeare";
private static final Predicate<String> IS_WHITESPACE =
Pattern.compile("^\\s*$").asPredicate();
private static final Predicate<String> IS_YEAR =
Pattern.compile("^1(5|6)\\d\\d$").asPredicate();
private static final Predicate<String> IS_COMMENT_START =
Pattern.compile("^<<").asPredicate();
private static final Predicate<String> IS_COMMENT_END =
Pattern.compile(">>$").asPredicate();
private static final Predicate<String> IS_THE_END =
Pattern.compile("^THE\\s+END$").asPredicate();
private static final Predicate<String> IS_DIGITS =
Pattern.compile("^\\d+$").asPredicate();
private static final Predicate<String> IS_AUTHOR =
Pattern.compile("^by\\s+William\\s+Shakespeare$").asPredicate();
private static final String SONNETS_TITLE = "THE SONNETS";
private static final Pattern BAD_CHARS =
Pattern.compile("\uFEFF|\\p{Cntrl}"); // BOMs and control characters
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(
"jdbc:h2:mem:shakespeare;INIT=CREATE SCHEMA IF NOT EXISTS " +
SCHEMA + "\\; " +
"SET SCHEMA " + SCHEMA + ";DB_CLOSE_DELAY=-1", "sa", ""
);
}
/**
* Creates the database by parsing {@link #SOURCE} and populating
* its contents into the database connected to via the
* {@link #getConnection()} method.
*/
public static void createDatabase() throws Exception {
final Map<String, Integer> wordMap = new HashMap<>();
final ExecutorService executor = Executors.newCachedThreadPool();
try (Connection conn = getConnection()) {
Statement stmt = conn.createStatement();
stmt.execute("DROP SCHEMA " + SCHEMA);
stmt.execute("CREATE SCHEMA " + SCHEMA);
stmt.execute("SET SCHEMA " + SCHEMA);
stmt.execute("CREATE TABLE \"text\" (" +
"id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR UNIQUE, year INT)");
stmt.execute("CREATE TABLE line (" +
"id INT PRIMARY KEY AUTO_INCREMENT, text_id INT, \"offset\" INT)");
stmt.execute("CREATE TABLE word (" +
"id INT PRIMARY KEY AUTO_INCREMENT, \"value\" VARCHAR UNIQUE)");
Search WWH ::




Custom Search