@Override public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { // extract tuple value String extractType = null; String tupleValue = null; for (TupleFilter filter : this.children) { filter.evaluate(tuple, cs); if (filter instanceof ConstantTupleFilter) { tupleValue = filter.getValues().iterator().next().toString(); } else if (filter instanceof CompareTupleFilter) { extractType = filter.getValues().iterator().next().toString(); } } // extract date this.date = extractDate(extractType, Integer.parseInt(tupleValue)); return true; }
@Override public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { boolean matched = false; for (int i = 0; i < whenFilters.size(); i++) { TupleFilter whenFilter = whenFilters.get(i); if (whenFilter.evaluate(tuple, cs)) { TupleFilter thenFilter = thenFilters.get(i); thenFilter.evaluate(tuple, cs); values = thenFilter.getValues(); matched = true; break; } } if (!matched) { if (elseFilter != null) { elseFilter.evaluate(tuple, cs); values = elseFilter.getValues(); } else { values = Collections.emptyList(); } } return true; }
@Override public void addChild(TupleFilter child) { if (child instanceof ColumnTupleFilter || child instanceof BuiltInFunctionTupleFilter) { columnContainerFilter = child; colPosition = methodParams.size(); methodParams.add(null); } else if (child instanceof ConstantTupleFilter) { this.constantTupleFilter = (ConstantTupleFilter) child; Serializable constVal = (Serializable) child.getValues().iterator().next(); try { constantPosition = methodParams.size(); Class<?> clazz = Primitives.wrap(method.getParameterTypes()[methodParams.size()]); if (!Primitives.isWrapperType(clazz)) methodParams.add(constVal); else methodParams.add((Serializable) clazz .cast(clazz.getDeclaredMethod("valueOf", String.class).invoke(null, constVal))); } catch (Exception e) { logger.warn("Reflection failed for methodParams. ", e); isValidFunc = false; } } super.addChild(child); }
this.conditionValues.addAll(child.getValues()); if (!this.conditionValues.isEmpty()) { this.firstCondValue = this.conditionValues.iterator().next();
if (!isConstant(filter)) { filter.evaluate(tuple, cs); tupleValue = filter.getValues().iterator().next();
@Override public void addChild(TupleFilter child) { if (child instanceof ColumnTupleFilter) { super.addChild(child); ColumnTupleFilter columnFilter = (ColumnTupleFilter) child; if (this.column != null) { throw new IllegalStateException("Duplicate columns! old is " + column.getName() + " and new is " + columnFilter.getColumn().getName()); } this.column = columnFilter.getColumn(); } else if (child instanceof ConstantTupleFilter) { // super.addChild(child) is omitted because the filter table name is useless at storage side, // we'll extract the useful filterTableResourceIdentifier,filterTableType etc and save it at the MassInTupleFilter itself if (filterTableName == null) { filterTableName = (String) child.getValues().iterator().next(); ExternalFilterDesc externalFilterDesc = TableMetadataManager.getInstance(KylinConfig.getInstanceFromEnv()).getExtFilterDesc(filterTableName); if (externalFilterDesc == null) { throw new IllegalArgumentException("External filter named " + filterTableName + " is not found"); } filterTableType = externalFilterDesc.getFilterTableType(); filterTableResourceIdentifier = externalFilterDesc.getFilterResourceIdentifier(); } } else { throw new IllegalStateException("MassInTupleFilter only has two children: one ColumnTupleFilter and one ConstantTupleFilter"); } }
@Override public boolean evaluate(ITuple tuple) { // extract tuple value String extractType = null; String tupleValue = null; for (TupleFilter filter : this.children) { filter.evaluate(tuple); if (filter instanceof ConstantTupleFilter) { tupleValue = filter.getValues().iterator().next(); } else if (filter instanceof CompareTupleFilter) { extractType = filter.getValues().iterator().next(); } } // extract date this.date = extractDate(extractType, Integer.valueOf(tupleValue)); return true; }
@Override public boolean evaluate(ITuple tuple) { if (whenFilters.size() != thenFilters.size()) { elseFilter = whenFilters.remove(whenFilters.size() - 1); } boolean matched = false; for (int i = 0; i < whenFilters.size(); i++) { TupleFilter whenFilter = whenFilters.get(i); if (whenFilter.evaluate(tuple)) { TupleFilter thenFilter = thenFilters.get(i); thenFilter.evaluate(tuple); values = thenFilter.getValues(); matched = true; break; } } if (!matched) { if (elseFilter != null) { elseFilter.evaluate(tuple); values = elseFilter.getValues(); } else { values = Collections.emptyList(); } } return true; }
if (isConstant(filter) == false) { filter.evaluate(tuple); tupleValue = filter.getValues().iterator().next();
@Override public void addChild(TupleFilter child) { super.addChild(child); if (child instanceof ColumnTupleFilter) { ColumnTupleFilter columnFilter = (ColumnTupleFilter) child; if (this.column != null) { throw new IllegalStateException("Duplicate columns! old is " + column.getName() + " and new is " + columnFilter.getColumn().getName()); } this.column = columnFilter.getColumn(); // if value is before column, we need to reverse the operator. e.g. "1 >= c1" => "c1 <= 1" if (!this.conditionValues.isEmpty() && needSwapOperator()) { this.operator = SWAP_OP_MAP.get(this.operator); } } else if (child instanceof ConstantTupleFilter) { this.conditionValues.addAll(child.getValues()); this.firstCondValue = this.conditionValues.iterator().next(); } else if (child instanceof DynamicTupleFilter) { DynamicTupleFilter dynamicFilter = (DynamicTupleFilter) child; this.dynamicVariables.put(dynamicFilter.getVariableName(), null); } //TODO // else if (child instanceof ExtractTupleFilter) { // } else if (child instanceof CaseTupleFilter) { // } }
@Override public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { // extract tuple value String extractType = null; String tupleValue = null; for (TupleFilter filter : this.children) { filter.evaluate(tuple, cs); if (filter instanceof ConstantTupleFilter) { tupleValue = filter.getValues().iterator().next().toString(); } else if (filter instanceof CompareTupleFilter) { extractType = filter.getValues().iterator().next().toString(); } } // extract date this.date = extractDate(extractType, Integer.parseInt(tupleValue)); return true; }
@Override public boolean evaluate(ITuple tuple) { // extract tuple value String extractType = null; String tupleValue = null; for (TupleFilter filter : this.children) { filter.evaluate(tuple); if (filter instanceof ConstantTupleFilter) { tupleValue = filter.getValues().iterator().next(); } else if (filter instanceof CompareTupleFilter) { extractType = filter.getValues().iterator().next(); } } // extract date this.date = extractDate(extractType, Integer.valueOf(tupleValue)); return true; }
@Override public void addChild(TupleFilter child) { if (child instanceof ColumnTupleFilter || child instanceof FunctionTupleFilter) { columnContainerFilter = child; colPosition = methodParams.size(); methodParams.add(null); } else if (child instanceof ConstantTupleFilter) { String constVal = child.getValues().iterator().next(); try { Class<?> clazz = Primitives.wrap(method.getParameterTypes()[methodParams.size()]); if (!Primitives.isWrapperType(clazz)) methodParams.add(constVal); else methodParams.add(clazz.cast(clazz.getDeclaredMethod("valueOf", String.class).invoke(null, constVal))); } catch (Exception e) { logger.debug(e.getMessage()); isValid = false; } } super.addChild(child); }
@Override public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { boolean matched = false; for (int i = 0; i < whenFilters.size(); i++) { TupleFilter whenFilter = whenFilters.get(i); if (whenFilter.evaluate(tuple, cs)) { TupleFilter thenFilter = thenFilters.get(i); thenFilter.evaluate(tuple, cs); values = thenFilter.getValues(); matched = true; break; } } if (!matched) { if (elseFilter != null) { elseFilter.evaluate(tuple, cs); values = elseFilter.getValues(); } else { values = Collections.emptyList(); } } return true; }
@Override public boolean evaluate(ITuple tuple) { if (whenFilters.size() != thenFilters.size()) { elseFilter = whenFilters.remove(whenFilters.size() - 1); } boolean matched = false; for (int i = 0; i < whenFilters.size(); i++) { TupleFilter whenFilter = whenFilters.get(i); if (whenFilter.evaluate(tuple)) { TupleFilter thenFilter = thenFilters.get(i); thenFilter.evaluate(tuple); values = thenFilter.getValues(); matched = true; break; } } if (!matched) { if (elseFilter != null) { elseFilter.evaluate(tuple); values = elseFilter.getValues(); } else { values = Collections.emptyList(); } } return true; }
@Override public void addChild(TupleFilter child) { if (child instanceof ColumnTupleFilter || child instanceof BuiltInFunctionTupleFilter) { columnContainerFilter = child; colPosition = methodParams.size(); methodParams.add(null); } else if (child instanceof ConstantTupleFilter) { this.constantTupleFilter = (ConstantTupleFilter) child; Serializable constVal = (Serializable) child.getValues().iterator().next(); try { constantPosition = methodParams.size(); Class<?> clazz = Primitives.wrap(method.getParameterTypes()[methodParams.size()]); if (!Primitives.isWrapperType(clazz)) methodParams.add(constVal); else methodParams.add((Serializable) clazz .cast(clazz.getDeclaredMethod("valueOf", String.class).invoke(null, constVal))); } catch (Exception e) { logger.warn("Reflection failed for methodParams. ", e); isValidFunc = false; } } super.addChild(child); }
if (!isConstant(filter)) { filter.evaluate(tuple); tupleValue = filter.getValues().iterator().next();
this.conditionValues.addAll(child.getValues()); if (!this.conditionValues.isEmpty()) { this.firstCondValue = this.conditionValues.iterator().next();
@Override public void addChild(TupleFilter child) { super.addChild(child); if (child instanceof ColumnTupleFilter) { ColumnTupleFilter columnFilter = (ColumnTupleFilter) child; if (this.column != null) { throw new IllegalStateException("Duplicate columns! old is " + column.getName() + " and new is " + columnFilter.getColumn().getName()); } this.column = columnFilter.getColumn(); // if value is before column, we need to reverse the operator. e.g. "1 >= c1" => "c1 <= 1" if (!this.conditionValues.isEmpty() && needSwapOperator()) { this.operator = SWAP_OP_MAP.get(this.operator); } } else if (child instanceof ConstantTupleFilter) { this.conditionValues.addAll(child.getValues()); if (!this.conditionValues.isEmpty()) { this.firstCondValue = this.conditionValues.iterator().next(); } } else if (child instanceof DynamicTupleFilter) { DynamicTupleFilter dynamicFilter = (DynamicTupleFilter) child; this.dynamicVariables.put(dynamicFilter.getVariableName(), null); } else if (child instanceof FunctionTupleFilter) { this.function = (FunctionTupleFilter)child; } //TODO // else if (child instanceof ExtractTupleFilter) { // } else if (child instanceof CaseTupleFilter) { // } }
@Override public void addChild(TupleFilter child) { if (child instanceof ColumnTupleFilter) { super.addChild(child); ColumnTupleFilter columnFilter = (ColumnTupleFilter) child; if (this.column != null) { throw new IllegalStateException("Duplicate columns! old is " + column.getName() + " and new is " + columnFilter.getColumn().getName()); } this.column = columnFilter.getColumn(); } else if (child instanceof ConstantTupleFilter) { // super.addChild(child) is omitted because the filter table name is useless at storage side, // we'll extract the useful filterTableResourceIdentifier,filterTableType etc and save it at the MassInTupleFilter itself if (filterTableName == null) { filterTableName = (String) child.getValues().iterator().next(); ExternalFilterDesc externalFilterDesc = TableMetadataManager.getInstance(KylinConfig.getInstanceFromEnv()).getExtFilterDesc(filterTableName); if (externalFilterDesc == null) { throw new IllegalArgumentException("External filter named " + filterTableName + " is not found"); } filterTableType = externalFilterDesc.getFilterTableType(); filterTableResourceIdentifier = externalFilterDesc.getFilterResourceIdentifier(); } } else { throw new IllegalStateException("MassInTupleFilter only has two children: one ColumnTupleFilter and one ConstantTupleFilter"); } }