Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.incubator.sql2;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.Flow;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
* Simple example code using various aspects of ADBA. These do not necessarily
* demonstrate the best way to use each feature, just one way.
*/
public class Examples {
// DataSourceFactory
public DataSource getDataSource() {
return DataSourceFactory.newFactory("oracle.database.adba")
.builder()
.url("//host.oracle.com:5521/example")
.username("scott")
.password("tiger")
.build();
}
// RowCountOperation
public void insertItem(Session session, Item item) {
session.rowCountOperation("insert into tab values (:id, :name, :answer)")
.set("id", item.id(), AdbaType.NUMERIC)
.set("name", item.name(), AdbaType.VARCHAR)
.set("answer", item.answer(), AdbaType.NUMERIC)
.submit();
}
// RowOperation
public void idsForAnswer(DataSource ds, List result, int correctAnswer) {
try (Session session = ds.getSession()) {
session.>rowOperation("select id, name, answer from tab where answer = :target")
.set("target", correctAnswer, AdbaType.NUMERIC)
.collect(() -> result,
(list, row) -> list.add(row.at("id").get(Integer.class)))
.submit();
}
}
// RowOperation
public CompletionStage> itemsForAnswer(DataSource ds, int answer) {
try (Session session = ds.getSession()) {
return session.>rowOperation("select id, name, answer from tab where answer = :target")
.set("target", 42, AdbaType.NUMERIC)
.collect(Collectors.mapping(
row -> new Item(row.at("id").get(Integer.class),
row.at("name").get(String.class),
row.at("answer").get(Integer.class)),
Collectors.toList()))
.submit()
.getCompletionStage();
}
}
// Independent OperationGroup
public void insertItemsIndependent(DataSource ds, List list) {
String sql = "insert into tab values (:id, :name, :answer)";
try (Session session = ds.getSession();
OperationGroup group =
session.operationGroup().independent()) {
for (Item elem : list) {
group.rowCountOperation(sql)
.set("id", elem.id)
.set("name", elem.name)
.set("answer", elem.answer)
.submit()
.getCompletionStage()
.exceptionally(t -> {
System.out.println(elem.id);
return null;
});
}
group.submit();
}
}
// Held OperationGroup
public void insertItemsHold(DataSource ds, List list) {
String sql = "insert into tabone values (:id, :name, :answer)";
try (Session session = ds.getSession();
OperationGroup group =
session.operationGroup().independent()) {
// Submit the group before any member is submitted. Each member
// operation executes immediately upon submission.
group.submit();
for (Item elem : list) {
group.rowCountOperation(sql)
.set("elem_", elem)
.submit()
.getCompletionStage()
.exceptionally(t -> {
System.out.println(elem.id);
return null;
});
}
}
}
// Parallel, Independent OperationGroup
public void updateListParallel(List list, DataSource ds) {
String query = "select id from tab where answer = :answer";
String update = "update tab set name = :name where id = :id";
try (Session session = ds.getSession();
OperationGroup