public static boolean setStringDataFilter(Analysis analysis, String datafilterString) { EList<Domain> dataFilters = analysis.getParameters().getDataFilter(); // update existing filters if (!dataFilters.isEmpty()) { Domain domain = dataFilters.get(0); EList<RangeRestriction> ranges = domain.getRanges(); RangeRestriction rangeRestriction = (ranges.isEmpty()) ? DomainHelper.addRangeRestriction(domain) : ranges.get(0); BooleanExpressionNode expressions = rangeRestriction.getExpressions(); if (expressions == null) { expressions = BooleanExpressionHelper.createBooleanExpressionNode(datafilterString); rangeRestriction.setExpressions(expressions); } else { Expression expression = expressions.getExpression(); if (expression == null) { expression = BooleanExpressionHelper.createTdExpression( BooleanExpressionHelper.DEFAULT_LANGUAGE, datafilterString); expressions.setExpression(expression); } else { expression.setBody(datafilterString); } } return false; } // else return dataFilters.add(createDomain(analysis, datafilterString)); }
private static Domain createDomain(Analysis analysis, String datafilterString, String alias) { // by default use same name as the analysis. This is ok as long as there is only one datafilter. Domain domain = DomainHelper.createDomain(analysis.getName() + alias); RangeRestriction rangeRestriction = DomainHelper.addRangeRestriction(domain); BooleanExpressionNode expressionNode = BooleanExpressionHelper.createBooleanExpressionNode(datafilterString); rangeRestriction.setExpressions(expressionNode); return domain; }
/** * DOC xqliu Comment method "setStringDataFilter". * * @param analysis * @param datafilterString * @param index 0 for DataFilterA, 1 for DataFilterB * @return */ public static boolean setStringDataFilter(Analysis analysis, String datafilterString, int index) { if (index == 1) { EList<Domain> dataFilters = analysis.getParameters().getDataFilter(); int size = dataFilters.size(); if (size == 0) { dataFilters.add(createDomain(analysis, "")); // $NON-NLS-1$ return dataFilters.add(createDomain(analysis, datafilterString, "1")); // $NON-NLS-1$ } else if (size == 1) { return dataFilters.add(createDomain(analysis, datafilterString, "1")); // $NON-NLS-1$ } else if (size == 2) { Domain domain = dataFilters.get(1); EList<RangeRestriction> ranges = domain.getRanges(); RangeRestriction rangeRestriction = (ranges.isEmpty()) ? DomainHelper.addRangeRestriction(domain) : ranges.get(0); BooleanExpressionNode expressions = rangeRestriction.getExpressions(); if (expressions == null) { expressions = BooleanExpressionHelper.createBooleanExpressionNode(datafilterString); rangeRestriction.setExpressions(expressions); } else { Expression expression = expressions.getExpression(); if (expression == null) { expression = BooleanExpressionHelper.createTdExpression( BooleanExpressionHelper.DEFAULT_LANGUAGE, datafilterString); expressions.setExpression(expression); } else { expression.setBody(datafilterString); } } return false; } else { return false; } } else { return setStringDataFilter(analysis, datafilterString); } }