Skip to content

Commit 520cbe6

Browse files
committed
Support dimension filter list [ch1880]
1 parent 20a5bd0 commit 520cbe6

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/main/java/io/tiledb/java/api/Dimension.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,27 @@ public T getTileExtent() throws TileDBError {
215215
return tileExtent;
216216
}
217217

218+
public FilterList getFilterList() throws TileDBError {
219+
FilterList filterlist;
220+
SWIGTYPE_p_p_tiledb_filter_list_t filterlistpp = tiledb.new_tiledb_filter_list_tpp();
221+
try {
222+
ctx.handleError(
223+
tiledb.tiledb_dimension_get_filter_list(ctx.getCtxp(), dimensionp, filterlistpp));
224+
filterlist = new FilterList(ctx, filterlistpp);
225+
} catch (TileDBError err) {
226+
tiledb.delete_tiledb_filter_list_tpp(filterlistpp);
227+
throw err;
228+
}
229+
return filterlist;
230+
}
231+
232+
public Dimension<T> setFilterList(FilterList filters) throws TileDBError {
233+
ctx.handleError(
234+
tiledb.tiledb_dimension_set_filter_list(
235+
ctx.getCtxp(), dimensionp, filters.getFilterListp()));
236+
return this;
237+
}
238+
218239
/**
219240
* @return A string representation of the extent.
220241
* @throws TileDBError A TileDB exception

src/test/java/io/tiledb/java/api/DimensionTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,28 @@ public class DimensionTest {
99
public void testDimension() throws Exception {
1010
try (Context ctx = new Context();
1111
Dimension<Integer> dim = new Dimension<>(ctx, "d1", Integer.class, new Pair<>(1, 10), 10)) {
12+
try (FilterList filterList = new FilterList(ctx)) {
13+
filterList.addFilter(new GzipFilter(ctx, 3));
14+
filterList.addFilter(new Bzip2Filter(ctx, 1));
15+
filterList.addFilter(new DoubleDeltaFilter(ctx, -1));
16+
dim.setFilterList(filterList);
17+
}
1218
Assert.assertEquals("d1", dim.getName());
1319
Assert.assertEquals(Datatype.TILEDB_INT32, dim.getType());
1420
Assert.assertEquals((Integer) 10, dim.getTileExtent());
1521
Assert.assertEquals((Integer) 1, dim.getDomain().getFirst());
1622
Assert.assertEquals((Integer) 10, dim.getDomain().getSecond());
23+
24+
// Filter List Tests
25+
FilterList filterList = dim.getFilterList();
26+
Assert.assertEquals(GzipFilter.class, filterList.getFilter(0).getClass());
27+
Assert.assertEquals(3, ((GzipFilter)filterList.getFilter(0)).getLevel());
28+
29+
Assert.assertEquals(Bzip2Filter.class, filterList.getFilter(1).getClass());
30+
Assert.assertEquals(1, ((Bzip2Filter)filterList.getFilter(1)).getLevel());
31+
32+
Assert.assertEquals(DoubleDeltaFilter.class, filterList.getFilter(2).getClass());
33+
Assert.assertEquals(-1, ((DoubleDeltaFilter)filterList.getFilter(2)).getLevel());
1734
}
1835
}
1936

0 commit comments

Comments
 (0)