Skip to content

Commit

Permalink
- Allow getting database connection URL and db version
Browse files Browse the repository at this point in the history
- Fix getting entity as string
- Add pair class
- Add json object properties
  • Loading branch information
rchodava committed Mar 10, 2016
1 parent f8dd197 commit beb60c7
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 5 deletions.
22 changes: 22 additions & 0 deletions core/src/main/java/org/chodavarapu/datamill/Pair.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.chodavarapu.datamill;

/**
* @author Ravi Chodavarapu (rchodava@gmail.com)
*/
public class Pair<T1, T2> {
private final T1 first;
private final T2 second;

public Pair(T1 first, T2 second) {
this.first = first;
this.second = second;
}

public T1 getFirst() {
return first;
}

public T2 getSecond() {
return second;
}
}
26 changes: 26 additions & 0 deletions core/src/main/java/org/chodavarapu/datamill/db/DatabaseClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@
import rx.Observable;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
* @author Ravi Chodavarapu (rchodava@gmail.com)
*/
public class DatabaseClient extends QueryBuilderImpl implements QueryRunner {
private static final Logger logger = LoggerFactory.getLogger(DatabaseClient.class);

private final DataSource dataSource;
private Database database;
private final String password;
Expand Down Expand Up @@ -49,6 +53,28 @@ private Database getDatabase() {
return database;
}

public String getVersion() {
try (Connection connection = getDatabase().getConnectionProvider().get()) {
StringBuilder vendor = new StringBuilder();
vendor.append(connection.getMetaData().getDatabaseProductName());
vendor.append(' ');
vendor.append(connection.getMetaData().getDatabaseProductVersion());
return vendor.toString();
} catch (SQLException e) {
logger.debug("Error retrieving database version information", e);
return null;
}
}

public String getURL() {
try (Connection connection = getDatabase().getConnectionProvider().get()) {
return connection.getMetaData().getURL();
} catch (SQLException e) {
logger.debug("Error retrieving database connection URL", e);
return null;
}
}

private Flyway getFlyway() {
Flyway flyway = new Flyway();
if (dataSource != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,6 @@ public Observable<byte[]> asChunks() {

@Override
public Observable<String> asString() {
return StringObservable.from(new InputStreamReader(inputStream));
return asBytes().map(bytes -> new String(bytes));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public JsonArray(String json) {
array = new io.vertx.core.json.JsonArray(json);
}

JsonArray(io.vertx.core.json.JsonArray array) {
this.array = array;
}

public JsonArray(List<JsonObject> values) {
ArrayList<io.vertx.core.json.JsonObject> objects = new ArrayList<>();
for (JsonObject value : values) {
Expand Down
20 changes: 16 additions & 4 deletions core/src/main/java/org/chodavarapu/datamill/json/JsonObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
public class JsonObject implements ReflectableValue {
final io.vertx.core.json.JsonObject object;

private JsonObject(io.vertx.core.json.JsonObject object) {
this.object = object;
}

public JsonObject() {
object = new io.vertx.core.json.JsonObject();
}
Expand Down Expand Up @@ -81,11 +85,11 @@ public String asString() {
return object.encode();
}

public Value get(String property) {
public JsonProperty get(String property) {
return new JsonProperty(property);
}

public Value get(Member member) {
public JsonProperty get(Member member) {
return get(member.name());
}

Expand Down Expand Up @@ -163,10 +167,10 @@ public String toString() {
return asString();
}

private class JsonProperty implements Value {
public class JsonProperty implements Value {
private String name;

public JsonProperty(String name) {
private JsonProperty(String name) {
this.name = name;
}

Expand Down Expand Up @@ -214,6 +218,14 @@ public int asInteger() {
return object.getInteger(name);
}

public JsonArray asJsonArray() {
return new JsonArray(object.getJsonArray(name));
}

public JsonObject asJson() {
return new JsonObject(object.getJsonObject(name));
}

@Override
public LocalDateTime asLocalDateTime() {
return LocalDateTime.parse(object.getString(name));
Expand Down

0 comments on commit beb60c7

Please sign in to comment.