use of jdk.incubator.sql2.MultiOperation in project oracle-db-examples by oracle.
the class MultiOperationTest method multiRowCountOperation.
/**
* Do something that approximates real work. Do a transaction. Uses
* TransactionCompletion, CompletionStage args, and catch Operation.
*/
@Test
public void multiRowCountOperation() throws Exception {
fail("TODO: Fix this test");
DataSourceFactory factory = DataSourceFactory.newFactory(FACTORY_NAME);
try (DataSource ds = factory.builder().url(URL).username(USER).password(PASSWORD).build();
Session session = ds.getSession(t -> fail("ERROR: " + t.getMessage()))) {
assertNotNull(session);
TransactionCompletion trans = session.transactionCompletion();
MultiOperation multiOp = session.multiOperation("update forum_user set city_id = ?" + " where id = ?").set("1", 40, AdbaType.INTEGER).set("2", 7782, AdbaType.INTEGER).onError(t -> {
System.out.println(t.toString());
});
RowCountOperation<Long> cntOp = multiOp.<Long>rowCountOperation();
multiOp.submit();
cntOp.apply(c -> {
long count = c.getCount();
if (count != 1L)
throw new SqlException("updated wrong number of rows", null, null, -1, null, -1);
return count;
}).onError(t -> t.printStackTrace()).submit().getCompletionStage().thenAccept(c -> {
assertTrue((long) c > 0);
});
session.catchErrors();
session.rollback().toCompletableFuture().get(TestConfig.getTimeout().toMillis(), TimeUnit.MILLISECONDS);
}
}
use of jdk.incubator.sql2.MultiOperation in project oracle-db-examples by oracle.
the class MultiOperationTest method multiRowCountOperationWithCountHandler.
@Test
public void multiRowCountOperationWithCountHandler() throws Exception {
fail("TODO: Fix this test");
DataSourceFactory factory = DataSourceFactory.newFactory(FACTORY_NAME);
try (DataSource ds = factory.builder().url(URL).username(USER).password(PASSWORD).build();
Session session = ds.getSession(t -> fail("ERROR: " + t.getMessage()))) {
assertNotNull(session);
BiConsumer<Integer, RowCountOperation<Long>> countHandler = (resNum, cntOp) -> {
assertTrue(resNum > 0);
cntOp.apply(c -> {
long count = c.getCount();
if (count != 1L)
fail("updated wrong number of rows");
return count;
}).onError(t -> fail(t.toString())).submit().getCompletionStage().thenAccept(c -> {
assertTrue(c > 0);
});
};
MultiOperation multiOp = session.multiOperation("update forum_user" + " set city_id = ?" + " where id = ?").set("1", 40, AdbaType.INTEGER).set("2", 7782, AdbaType.INTEGER).onError(t -> {
fail(t.toString());
});
multiOp.onCount(countHandler).submit();
session.catchErrors();
session.rollback().toCompletableFuture().get(TestConfig.getTimeout().toMillis(), TimeUnit.MILLISECONDS);
}
}
use of jdk.incubator.sql2.MultiOperation in project oracle-db-examples by oracle.
the class MultiOperationTest method multiRowOperationWithRowHandler.
/**
* Execute a query returning a single result.
*/
@Test
public void multiRowOperationWithRowHandler() {
fail("TODO: Fix this test");
Properties props = new Properties();
DataSourceFactory factory = DataSourceFactory.newFactory(FACTORY_NAME);
try (DataSource ds = factory.builder().url(URL).username(USER).password(PASSWORD).sessionProperty(JDBC_CONNECTION_PROPERTIES, props).build();
Session session = ds.getSession(t -> fail("ERROR: " + t.getMessage()))) {
assertNotNull(session);
MultiOperation multiOp = session.multiOperation("select * from forum_user").onError(t -> {
fail(t.toString());
});
BiConsumer<Integer, RowOperation<Integer>> rowHandler = (resNum, rowOp) -> {
assertTrue(resNum > 0);
rowOp.collect(Collector.<Result.RowColumn, int[], Integer>of(() -> new int[1], (int[] a, Result.RowColumn r) -> {
a[0] = a[0] + r.at("sal").get(Integer.class);
}, (l, r) -> l, a -> (Integer) a[0])).onError(t -> {
fail(t.toString());
}).submit().getCompletionStage().thenAccept(n -> {
assertTrue((long) n > 0);
}).toCompletableFuture();
};
multiOp.onRows(rowHandler).submit().getCompletionStage().toCompletableFuture().get(TestConfig.getTimeout().toMillis(), TimeUnit.MILLISECONDS);
} catch (Exception e) {
fail(e.getMessage());
}
}
use of jdk.incubator.sql2.MultiOperation in project oracle-db-examples by oracle-samples.
the class MultiOperationTest method multiRowOperationWithRowHandler.
/**
* Execute a query returning a single result.
*/
@Test
public void multiRowOperationWithRowHandler() {
fail("TODO: Fix this test");
Properties props = new Properties();
DataSourceFactory factory = DataSourceFactory.newFactory(FACTORY_NAME);
try (DataSource ds = factory.builder().url(URL).username(USER).password(PASSWORD).sessionProperty(JDBC_CONNECTION_PROPERTIES, props).build();
Session session = ds.getSession(t -> fail("ERROR: " + t.getMessage()))) {
assertNotNull(session);
MultiOperation multiOp = session.multiOperation("select * from forum_user").onError(t -> {
fail(t.toString());
});
BiConsumer<Integer, RowOperation<Integer>> rowHandler = (resNum, rowOp) -> {
assertTrue(resNum > 0);
rowOp.collect(Collector.<Result.RowColumn, int[], Integer>of(() -> new int[1], (int[] a, Result.RowColumn r) -> {
a[0] = a[0] + r.at("sal").get(Integer.class);
}, (l, r) -> l, a -> (Integer) a[0])).onError(t -> {
fail(t.toString());
}).submit().getCompletionStage().thenAccept(n -> {
assertTrue((long) n > 0);
}).toCompletableFuture();
};
multiOp.onRows(rowHandler).submit().getCompletionStage().toCompletableFuture().get(TestConfig.getTimeout().toMillis(), TimeUnit.MILLISECONDS);
} catch (Exception e) {
fail(e.getMessage());
}
}
use of jdk.incubator.sql2.MultiOperation in project oracle-db-examples by oracle-samples.
the class MultiOperationTest method multiRowPublisherOperation.
@Test
public void multiRowPublisherOperation() throws Exception {
fail("TODO: Fix this test");
String sql = "select id, name from forum_user";
CompletableFuture<List<String>> result = new CompletableFuture<>();
CompletionStage<List<String>> cs = null;
DataSourceFactory factory = DataSourceFactory.newFactory(FACTORY_NAME);
try (DataSource ds = factory.builder().url(URL).username(USER).password(PASSWORD).build();
Session session = ds.getSession(t -> fail("ERROR: " + t.getMessage()))) {
assertNotNull(session);
MultiOperation multiOp = session.multiOperation(sql).onError(t -> {
fail(t.toString());
});
RowPublisherOperation rowPublisherOp = multiOp.rowPublisherOperation();
multiOp.submit();
Flow.Subscriber<Result.RowColumn> subscriber = getSubscriber(result, false);
cs = rowPublisherOp.subscribe(subscriber, result).onError(e -> fail(e.toString())).timeout(TestConfig.getTimeout()).submit().getCompletionStage();
} catch (Exception e) {
fail(e.getMessage());
}
List<String> names = result.get(TestConfig.getTimeout().toMillis(), TimeUnit.MILLISECONDS);
assertTrue(names != null && !names.isEmpty());
}
Aggregations