Skip to content

Commit 163e5c6

Browse files
committed
Support dimension filter list [ch1880]
1 parent 20a5bd0 commit 163e5c6

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

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

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

218+
/**
219+
* Gets the list of filtes associated with the dimension
220+
*
221+
* @return A FilterList instance
222+
* @throws TileDBError A TileDB exception
223+
*/
224+
public FilterList getFilterList() throws TileDBError {
225+
FilterList filterlist;
226+
SWIGTYPE_p_p_tiledb_filter_list_t filterlistpp = tiledb.new_tiledb_filter_list_tpp();
227+
try {
228+
ctx.handleError(
229+
tiledb.tiledb_dimension_get_filter_list(ctx.getCtxp(), dimensionp, filterlistpp));
230+
filterlist = new FilterList(ctx, filterlistpp);
231+
} catch (TileDBError err) {
232+
tiledb.delete_tiledb_filter_list_tpp(filterlistpp);
233+
throw err;
234+
}
235+
return filterlist;
236+
}
237+
238+
/**
239+
* Sets the Dimension FilterList.
240+
*
241+
* @param filters A TileDB FilterList
242+
* @throws TileDBError A TileDB exception
243+
*/
244+
public Dimension<T> setFilterList(FilterList filters) throws TileDBError {
245+
ctx.handleError(
246+
tiledb.tiledb_dimension_set_filter_list(
247+
ctx.getCtxp(), dimensionp, filters.getFilterListp()));
248+
return this;
249+
}
250+
218251
/**
219252
* @return A string representation of the extent.
220253
* @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)