@Override public boolean isExpressionEvaluable(ExpressionResolver.ExpressionContext expr) { // expression context is specific to cubequerycontext. So for segmentation candidate, // I can't ask my children to check this context for evaluability. return cubeStream() .map(cube -> cube.getExpressionByName(expr.getExprCol().getName())) .allMatch(Objects::nonNull); }
@Override public boolean isExpressionEvaluable(ExpressionResolver.ExpressionContext expr) { // expression context is specific to cubequerycontext. So for segmentation candidate, // I can't ask my children to check this context for evaluability. return cubeStream() .map(cube -> cube.getExpressionByName(expr.getExprCol().getName())) .allMatch(Objects::nonNull); }
assertNotNull(cube2.getExpressionByName("expr_measure")); assertTrue(cube2.getExpressionByName("expr_measure").getTags().keySet().contains("is_ui_visible")); assertTrue(cube2.getExpressionByName("expr_measure").getTags().values().contains("true"));
assertEquals(hcube.getMeasureByName("msr1").getDescription(), "first measure"); assertEquals(hcube.getMeasureByName("msr1").getDisplayString(), "Measure1"); assertNotNull(hcube.getExpressionByName("expr1")); assertEquals(hcube.getExpressionByName("expr1").getDescription(), "first expression"); assertEquals(hcube.getExpressionByName("expr1").getDisplayString(), "Expression1"); assertNotNull(hcube.getExpressionByName("expr2")); assertEquals(hcube.getExpressionByName("expr2").getExpressions().size(), 4); ExprColumn expr2 = hcube.getExpressionByName("expr2"); Iterator<ExprSpec> esIter = expr2.getExpressionSpecs().iterator(); ExprSpec first = esIter.next();
assertEquals(cube2.getDimAttributeByName("dim2").getDescription(), "ref dim"); assertEquals(cube2.getDimAttributeByName("dim2").getDisplayString(), "Dim2 refer"); assertNotNull(cube2.getExpressionByName("msr5")); assertEquals(cube2.getExpressionByName("msr5").getDescription(), "fifth measure"); assertEquals(cube2.getExpressionByName("msr5").getDisplayString(), "Avg msr5"); assertNotNull(cube2.getExpressionByName("booleancut")); assertEquals(cube2.getExpressionByName("booleancut").getDescription(), "a boolean expression"); assertEquals(cube2.getExpressionByName("booleancut").getDisplayString(), "Boolean Cut"); assertEquals(cube2.getExpressionByName("booleancut").getExpressions().size(), 2); List<String> booleanCutExprs = new ArrayList<>(cube2.getExpressionByName("booleancut").getExpressions()); assertTrue(booleanCutExprs.contains("dim1 | dim2 AND dim2 = 'XYZ'")); assertTrue(cube2.allFieldsQueriable());