Skip to content

Commit

Permalink
Allow totals and regular tables to be joined together
Browse files Browse the repository at this point in the history
  • Loading branch information
niloc132 committed Apr 5, 2023
1 parent 18f5d4a commit 808bf79
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,43 @@
package io.deephaven.web.client.api;

import elemental2.core.JsArray;
import elemental2.promise.Promise;
import io.deephaven.web.client.state.ClientTableState;
import jsinterop.annotations.JsIgnore;
import jsinterop.annotations.JsMethod;
import jsinterop.annotations.JsOptional;
import jsinterop.annotations.JsType;

@JsType(namespace = "dh")
public interface JoinableTable {
@JsIgnore
ClientTableState state();

@JsMethod
Promise<JsTable> freeze();

@JsMethod
Promise<JsTable> snapshot(JsTable baseTable, @JsOptional Boolean doInitialSnapshot,
@JsOptional String[] stampColumns);

@JsMethod
@Deprecated
Promise<JsTable> join(Object joinType, JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional Object asOfMatchRule);

@JsMethod
Promise<JsTable> asOfJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional String asOfMatchRule);

@JsMethod
Promise<JsTable> crossJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional Double reserve_bits);

@JsMethod
Promise<JsTable> exactJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd);

@JsMethod
Promise<JsTable> naturalJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd);
}
Original file line number Diff line number Diff line change
Expand Up @@ -837,6 +837,7 @@ public Promise<JsTable> freeze() {
.then(state -> Promise.resolve(new JsTable(workerConnection, state)));
}

@Override
@JsMethod
public Promise<JsTable> snapshot(JsTable baseTable, @JsOptional Boolean doInitialSnapshot,
@JsOptional String[] stampColumns) {
Expand All @@ -847,12 +848,12 @@ public Promise<JsTable> snapshot(JsTable baseTable, @JsOptional Boolean doInitia
} else {
realDoInitialSnapshot = true;
}
final String[] realStampColums;
final String[] realStampColumns;
if (stampColumns == null) {
realStampColums = new String[0]; // server doesn't like null
realStampColumns = new String[0]; // server doesn't like null
} else {
// make sure we pass an actual string array
realStampColums = Arrays.stream(stampColumns).toArray(String[]::new);
realStampColumns = Arrays.stream(stampColumns).toArray(String[]::new);
}
final String fetchSummary =
"snapshot(" + baseTable + ", " + doInitialSnapshot + ", " + Arrays.toString(stampColumns) + ")";
Expand All @@ -862,13 +863,14 @@ public Promise<JsTable> snapshot(JsTable baseTable, @JsOptional Boolean doInitia
request.setTriggerId(state().getHandle().makeTableReference());
request.setResultId(state.getHandle().makeTicket());
request.setInitial(realDoInitialSnapshot);
request.setStampColumnsList(realStampColums);
request.setStampColumnsList(realStampColumns);

workerConnection.tableServiceClient().snapshotWhen(request, metadata, c::apply);
}, fetchSummary).refetch(this, workerConnection.metadata())
.then(state -> Promise.resolve(new JsTable(workerConnection, state)));
}

@Override
@JsMethod
@Deprecated
public Promise<JsTable> join(Object joinType, JoinableTable rightTable, JsArray<String> columnsToMatch,
Expand All @@ -886,6 +888,7 @@ public Promise<JsTable> join(Object joinType, JoinableTable rightTable, JsArray<
}
}

@Override
@JsMethod
public Promise<JsTable> asOfJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional String asOfMatchRule) {
Expand All @@ -910,6 +913,7 @@ public Promise<JsTable> asOfJoin(JoinableTable rightTable, JsArray<String> colum
.then(state -> Promise.resolve(new JsTable(workerConnection, state)));
}

@Override
@JsMethod
public Promise<JsTable> crossJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional Double reserve_bits) {
Expand All @@ -933,6 +937,7 @@ public Promise<JsTable> crossJoin(JoinableTable rightTable, JsArray<String> colu
.then(state -> Promise.resolve(new JsTable(workerConnection, state)));
}

@Override
@JsMethod
public Promise<JsTable> exactJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd) {
Expand All @@ -953,6 +958,7 @@ public Promise<JsTable> exactJoin(JoinableTable rightTable, JsArray<String> colu
.then(state -> Promise.resolve(new JsTable(workerConnection, state)));
}

@Override
@JsMethod
public Promise<JsTable> naturalJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,4 +154,53 @@ public JsArray<FilterCondition> getFilter() {
public JsArray<CustomColumn> getCustomColumns() {
return wrappedTable.getCustomColumns();
}

@Override
@JsMethod
public Promise<JsTable> freeze() {
return wrappedTable.freeze();
}

@Override
@JsMethod
public Promise<JsTable> snapshot(JsTable baseTable, @JsOptional Boolean doInitialSnapshot,
@JsOptional String[] stampColumns) {
return wrappedTable.snapshot(baseTable, doInitialSnapshot, stampColumns);
}

@Override
@Deprecated
@JsMethod
public Promise<JsTable> join(Object joinType, JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional Object asOfMatchRule) {
return wrappedTable.join(joinType, rightTable, columnsToMatch, columnsToAdd, asOfMatchRule);
}

@Override
@JsMethod
public Promise<JsTable> asOfJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional String asOfMatchRule) {
return wrappedTable.asOfJoin(rightTable, columnsToMatch, columnsToAdd, asOfMatchRule);
}

@Override
@JsMethod
public Promise<JsTable> crossJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd, @JsOptional Double reserve_bits) {
return wrappedTable.crossJoin(rightTable, columnsToMatch, columnsToAdd, reserve_bits);
}

@Override
@JsMethod
public Promise<JsTable> exactJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd) {
return wrappedTable.exactJoin(rightTable, columnsToMatch, columnsToAdd);
}

@Override
@JsMethod
public Promise<JsTable> naturalJoin(JoinableTable rightTable, JsArray<String> columnsToMatch,
@JsOptional JsArray<String> columnsToAdd) {
return wrappedTable.naturalJoin(rightTable, columnsToMatch, columnsToAdd);
}
}

0 comments on commit 808bf79

Please sign in to comment.