CubeSupport implements HasDataHierarchy, HasTsCursor, HasDataDisplayName { @NonNull public static IParam<DataSet, CubeId> idBySeparator(@NonNull CubeId root, @NonNull String separator, @NonNull String name) { return new BySeparatorParam(Objects.requireNonNull(separator), Objects.requireNonNull(root), Objects.requireNonNull(name)); } private  CubeSupport(Resource resource); @NonNull static CubeSupport of(@NonNull Resource resource); @Override List<DataSet> children(DataSource dataSource); @Override List<DataSet> children(DataSet parent); @Override TsCursor<DataSet> getData(DataSource dataSource, TsInformationType type); @Override TsCursor<DataSet> getData(DataSet dataSet, TsInformationType type); @Override String getDisplayName(DataSource dataSource); @Override String getDisplayName(DataSet dataSet); @Override String getDisplayNodeName(DataSet dataSet); @NonNull static IParam<DataSet, CubeId> idByName(@NonNull CubeId root); @NonNull static IParam<DataSet, CubeId> idBySeparator(@NonNull CubeId root, @NonNull String separator, @NonNull String name); @NonNull static ITsProvider asTsProvider(
            @NonNull String providerName,
            @NonNull Logger logger,
            @NonNull CubeSupport cubeSupport,
            @NonNull HasDataMoniker monikerSupport,
            @NonNull Runnable cacheCleaner);  }
@Test public void testidBySeparator() { assertThat(CubeSupport.idBySeparator(SECTOR_REGION, ".", "id")).satisfies(o -> { assertThat(o.defaultValue()).isEqualTo(SECTOR_REGION); assertThat(o.get(DataSet.builder(dataSource, DataSet.Kind.COLLECTION).put("id", "industry").build())).isEqualTo(INDUSTRY); assertThat(o.get(DataSet.builder(dataSource, DataSet.Kind.SERIES).put("id", "industry.be").build())).isEqualTo(INDUSTRY_BE); }); }