Skip to content

Commit 63780c8

Browse files
mmerdesrtroilo
authored andcommitted
#470: use datasource instead of OSHDBDatabase
1 parent 3db75a6 commit 63780c8

File tree

4 files changed

+34
-19
lines changed

4 files changed

+34
-19
lines changed

oshdb-api-ignite/src/main/java/org/heigit/ohsome/oshdb/api/db/OSHDBIgnite.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Optional;
77
import java.util.stream.Collectors;
88
import java.util.stream.Stream;
9+
import javax.sql.DataSource;
910
import org.apache.ignite.Ignite;
1011
import org.apache.ignite.Ignition;
1112
import org.apache.ignite.lang.IgniteRunnable;
@@ -18,6 +19,7 @@
1819
import org.heigit.ohsome.oshdb.util.exceptions.OSHDBException;
1920
import org.heigit.ohsome.oshdb.util.exceptions.OSHDBTableNotFoundException;
2021
import org.heigit.ohsome.oshdb.util.mappable.OSHDBMapReducible;
22+
import org.heigit.ohsome.oshdb.util.tagtranslator.JdbcTagTranslator;
2123
import org.heigit.ohsome.oshdb.util.tagtranslator.TagTranslator;
2224

2325
/**
@@ -41,7 +43,7 @@ public enum ComputeMode {
4143
}
4244

4345
private final Ignite ignite;
44-
private final OSHDBDatabase keytables;
46+
private final TagTranslator tagTranslator;
4547
private final boolean owner;
4648
private ComputeMode computeMode = ComputeMode.LOCAL_PEEK;
4749

@@ -52,7 +54,7 @@ public enum ComputeMode {
5254
*
5355
* @throws OSHDBException if cluster state is not active.
5456
*/
55-
public OSHDBIgnite(OSHDBDatabase keytables) {
57+
public OSHDBIgnite(DataSource keytables) {
5658
this(new File("ignite-config.xml"), keytables);
5759
}
5860

@@ -62,7 +64,7 @@ public OSHDBIgnite(OSHDBDatabase keytables) {
6264
* @param ignite Ignite instance to use.
6365
* @throws OSHDBException if cluster state is not active.
6466
*/
65-
public OSHDBIgnite(Ignite ignite, OSHDBDatabase keytables) {
67+
public OSHDBIgnite(Ignite ignite, DataSource keytables) {
6668
this(ignite, false, keytables);
6769
}
6870

@@ -72,7 +74,7 @@ public OSHDBIgnite(Ignite ignite, OSHDBDatabase keytables) {
7274
* @param igniteConfigFilePath ignite configuration file
7375
* @throws OSHDBException if cluster state is not active.
7476
*/
75-
public OSHDBIgnite(String igniteConfigFilePath, OSHDBDatabase keytables) {
77+
public OSHDBIgnite(String igniteConfigFilePath, DataSource keytables) {
7678
this(new File(igniteConfigFilePath), keytables);
7779
}
7880

@@ -82,14 +84,15 @@ public OSHDBIgnite(String igniteConfigFilePath, OSHDBDatabase keytables) {
8284
* @param igniteConfig ignite configuration file
8385
* @throws OSHDBException if cluster state is not active.
8486
*/
85-
public OSHDBIgnite(File igniteConfig, OSHDBDatabase keytables) {
87+
public OSHDBIgnite(File igniteConfig, DataSource keytables) {
8688
this(startClient(igniteConfig), true, keytables);
8789
}
8890

89-
public OSHDBIgnite(Ignite ignite, boolean owner, OSHDBDatabase keytables) {
91+
public OSHDBIgnite(Ignite ignite, boolean owner, DataSource keytables) {
9092
this.ignite = ignite;
9193
this.owner = owner;
92-
this.keytables = keytables;
94+
this.tagTranslator = new JdbcTagTranslator(keytables);
95+
9396
checkStateActive();
9497
}
9598

@@ -107,7 +110,7 @@ private void checkStateActive() {
107110

108111
@Override
109112
public TagTranslator getTagTranslator() {
110-
return keytables.getTagTranslator();
113+
return tagTranslator;
111114
}
112115

113116
@Override

oshdb-api-ignite/src/test/java/org/heigit/ohsome/oshdb/api/tests/MapReduceOSHDBIgniteTest.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.heigit.ohsome.oshdb.api.tests;
22

3+
import static org.heigit.ohsome.oshdb.api.db.H2Support.pathToUrl;
34
import static org.junit.jupiter.api.Assertions.fail;
45

56
import java.io.IOException;
67
import java.io.ObjectInputStream;
8+
import java.nio.file.Path;
79
import java.sql.Connection;
810
import java.sql.ResultSet;
911
import java.sql.SQLException;
@@ -22,8 +24,8 @@
2224
import org.apache.ignite.logger.slf4j.Slf4jLogger;
2325
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
2426
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
27+
import org.h2.jdbcx.JdbcConnectionPool;
2528
import org.heigit.ohsome.oshdb.api.db.OSHDBDatabase;
26-
import org.heigit.ohsome.oshdb.api.db.OSHDBH2;
2729
import org.heigit.ohsome.oshdb.api.db.OSHDBIgnite;
2830
import org.heigit.ohsome.oshdb.grid.GridOSHNodes;
2931
import org.heigit.ohsome.oshdb.util.CellId;
@@ -63,11 +65,14 @@ private static OSHDBDatabase initOshdb(Consumer<OSHDBIgnite> computeMode) {
6365
ignite.getOrCreateCache(new CacheConfiguration<>(TableNames.T_WAYS.toString(prefix)));
6466
ignite.getOrCreateCache(new CacheConfiguration<>(TableNames.T_RELATIONS.toString(prefix)));
6567

66-
OSHDBH2 oshdbH2 = new OSHDBH2("../data/test-data");
68+
JdbcConnectionPool oshdbH2 = JdbcConnectionPool.create(pathToUrl(Path.of("../data/test-data")), "sa",
69+
"");
70+
6771
// load test data into ignite cache
68-
try (IgniteDataStreamer<Long, GridOSHNodes> streamer = ignite.dataStreamer(cache.getName())) {
69-
Connection h2Conn = oshdbH2.getConnection();
70-
Statement h2Stmt = h2Conn.createStatement();
72+
try (IgniteDataStreamer<Long, GridOSHNodes> streamer = ignite.dataStreamer(cache.getName());
73+
Connection h2Conn = oshdbH2.getConnection();
74+
Statement h2Stmt = h2Conn.createStatement();
75+
) {
7176

7277
streamer.allowOverwrite(true);
7378

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.heigit.ohsome.oshdb.api.db;
2+
3+
import java.nio.file.Path;
4+
5+
public class H2Support {
6+
7+
public static String pathToUrl(Path path) {
8+
var absolutePath = path.toAbsolutePath().toString();
9+
absolutePath = absolutePath.replaceAll("\\.mv\\.db$", "");
10+
return String.format("jdbc:h2:%s;ACCESS_MODE_DATA=r", absolutePath);
11+
}
12+
}

oshdb-api/src/main/java/org/heigit/ohsome/oshdb/api/db/OSHDBH2.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.heigit.ohsome.oshdb.api.db;
22

33
import static java.util.Optional.ofNullable;
4+
import static org.heigit.ohsome.oshdb.api.db.H2Support.pathToUrl;
45

56
import java.nio.file.Path;
67
import javax.sql.DataSource;
@@ -45,12 +46,6 @@ private OSHDBH2(JdbcConnectionPool ds) {
4546
this.connectionPool = ds;
4647
}
4748

48-
private static String pathToUrl(Path path) {
49-
var absolutePath = path.toAbsolutePath().toString();
50-
absolutePath = absolutePath.replaceAll("\\.mv\\.db$", "");
51-
return String.format("jdbc:h2:%s;ACCESS_MODE_DATA=r", absolutePath);
52-
}
53-
5449
@Override
5550
public OSHDBH2 prefix(String prefix) {
5651
return (OSHDBH2) super.prefix(prefix);

0 commit comments

Comments
 (0)