List of usage examples for org.apache.commons.dbutils.handlers AbstractKeyedHandler AbstractKeyedHandler
AbstractKeyedHandler
From source file:javasnack.flywaydb.FlywaydbDemo3Test.java
@Test public void usingPlaceholderAndEncoding() throws Exception { Properties properties = new Properties(); properties.setProperty("flyway.user", "sa"); properties.setProperty("flyway.password", ""); properties.setProperty("flyway.url", "jdbc:h2:mem:flywaydb_demo3;DB_CLOSE_DELAY=-1"); properties.setProperty("flyway.driver", "org.h2.Driver"); final Flyway flyway = new Flyway(); flyway.configure(properties);// w ww.j a v a 2s. c om flyway.setLocations("flywaydbdemos/demo3"); flyway.setEncoding("UTF-8"); Map<String, String> placeholders = new HashMap<>(); placeholders.put("L1", "abc"); placeholders.put("L2", "def"); placeholders.put("L3", "abc"); placeholders.put("L4", "def"); flyway.setPlaceholders(placeholders); MigrationInfoService mis = flyway.info(); assertEquals(mis.all().length, 3); for (MigrationInfo mi : mis.all()) { System.out.println(mi.getVersion()); System.out.println(mi.getDescription()); System.out.println(mi.getState()); System.out.println(mi.getType()); } // 3 migrations (V1, V1.1, V1.2) must be pending status. assertEquals(mis.pending().length, 3); // no version applied. assertEquals(mis.applied().length, 0); // no current version. MigrationInfo mi = mis.current(); assertNull(mi); // migrate to V1.1 flyway.setTarget(MigrationVersion.fromVersion("1.1")); flyway.migrate(); mis = flyway.info(); assertEquals(mis.all().length, 3); // no pending, V1.2 -> "ABOVE_TARGET". assertEquals(mis.pending().length, 0); // V1, V1.1, V1.2 were applied. assertEquals(mis.applied().length, 2); for (MigrationInfo _mi : mis.all()) { System.out.println(_mi.getVersion()); System.out.println(_mi.getDescription()); System.out.println(_mi.getState()); System.out.println(_mi.getType()); } mi = mis.current(); assertEquals(mi.getVersion().getVersion(), "1.1"); assertEquals(mi.getDescription(), "add t1 hobby column"); assertEquals(mi.getState(), MigrationState.SUCCESS); // change placeholder prefix and suffix. flyway.setPlaceholderPrefix("%{%"); flyway.setPlaceholderSuffix("%}%"); // migrate to latest version flyway.setTarget(MigrationVersion.LATEST); flyway.migrate(); mis = flyway.info(); assertEquals(mis.all().length, 3); assertEquals(mis.pending().length, 0); assertEquals(mis.applied().length, 3); mi = mis.current(); assertEquals(mi.getVersion().getVersion(), "1.2"); assertEquals(mi.getDescription(), "insert t1 data2"); assertEquals(mi.getState(), MigrationState.SUCCESS); // select and validate records. QueryRunner run = new QueryRunner(); ResultSetHandler<Map<Long, T1>> h = new AbstractKeyedHandler<Long, T1>() { @Override protected T1 createRow(ResultSet rs) throws SQLException { T1 row = new T1(); row.id = rs.getLong("id"); row.name = rs.getString("name"); row.age = rs.getInt("age"); row.hobby = rs.getString("hobby"); return row; } @Override protected Long createKey(ResultSet rs) throws SQLException { return rs.getLong("id"); } }; Map<Long, T1> found = run.query(conn, "select id, name, age, hobby from abc_def_t1", h); assertEquals(found.size(), 4); T1 jon = found.get(1L); assertEquals(jon.name, ""); assertEquals(jon.hobby, ""); T1 alice = found.get(3L); assertEquals(alice.name, "alice"); assertEquals(alice.hobby, "swimming"); }
From source file:javasnack.flywaydb.FlywaydbDemo1Test.java
@Test public void typicalMigrationFlow() throws Exception { Properties properties = new Properties(); properties.setProperty("flyway.user", "sa"); properties.setProperty("flyway.password", ""); properties.setProperty("flyway.url", "jdbc:h2:mem:flywaydb_demo1;DB_CLOSE_DELAY=-1"); properties.setProperty("flyway.driver", "org.h2.Driver"); final Flyway flyway = new Flyway(); flyway.configure(properties);//from w w w. ja v a 2 s.co m assertNotNull(flyway.getDataSource()); flyway.setLocations("flywaydbdemos/demo1"); // not initialized -> no target schemas. assertEquals(flyway.getSchemas().length, 0); flyway.init(); assertEquals(flyway.getSchemas().length, 1); assertEquals(flyway.getSchemas()[0], "PUBLIC"); assertEquals(flyway.getTable(), "schema_version"); MigrationInfoService mis = flyway.info(); assertEquals(mis.all().length, 4); for (MigrationInfo mi : mis.all()) { System.out.println(mi.getVersion()); System.out.println(mi.getDescription()); System.out.println(mi.getState()); System.out.println(mi.getType()); } // 3 migrations (V1.1, V1.2, V1.3) must be pending status. assertEquals(mis.pending().length, 3); // initialized version (V1) applied. assertEquals(mis.applied().length, 1); // current version is initialized version (V1). MigrationInfo mi = mis.current(); assertEquals(mi.getVersion().getVersion(), "1"); assertEquals(mi.getDescription(), flyway.getInitDescription()); assertEquals(mi.getState(), MigrationState.SUCCESS); // migrate to V1.2 flyway.setTarget(MigrationVersion.fromVersion("1.2")); flyway.migrate(); mis = flyway.info(); assertEquals(mis.all().length, 4); // no pending, V1.3 -> "ABOVE_TARGET". assertEquals(mis.pending().length, 0); // V1, V1.1, V1.2 were applied. assertEquals(mis.applied().length, 3); for (MigrationInfo _mi : mis.all()) { System.out.println(_mi.getVersion()); System.out.println(_mi.getDescription()); System.out.println(_mi.getState()); System.out.println(_mi.getType()); } mi = mis.current(); assertEquals(mi.getVersion().getVersion(), "1.2"); assertEquals(mi.getDescription(), "add t1 hobby column"); assertEquals(mi.getState(), MigrationState.SUCCESS); // migrate to latest version flyway.setTarget(MigrationVersion.LATEST); flyway.migrate(); mis = flyway.info(); assertEquals(mis.all().length, 4); assertEquals(mis.pending().length, 0); assertEquals(mis.applied().length, 4); mi = mis.current(); assertEquals(mi.getVersion().getVersion(), "1.3"); assertEquals(mi.getDescription(), "insert t1 data2"); assertEquals(mi.getState(), MigrationState.SUCCESS); // select and validate records. QueryRunner run = new QueryRunner(); ResultSetHandler<Map<Long, T1>> h = new AbstractKeyedHandler<Long, T1>() { @Override protected T1 createRow(ResultSet rs) throws SQLException { T1 row = new T1(); row.id = rs.getLong("id"); row.name = rs.getString("name"); row.age = rs.getInt("age"); row.hobby = rs.getString("hobby"); return row; } @Override protected Long createKey(ResultSet rs) throws SQLException { return rs.getLong("id"); } }; Map<Long, T1> found = run.query(conn, "select id, name, age, hobby from t1", h); assertEquals(found.size(), 4); T1 jon = found.get(1L); assertEquals(jon.name, "jon"); assertEquals(jon.hobby, ""); T1 alice = found.get(3L); assertEquals(alice.name, "alice"); assertEquals(alice.hobby, "swimming"); }