protected Double calculateScalar(int column, String functionCode) { DataSet dataSet = columnIndex.getDataSetIndex().dataSet; List targetValues = new ArrayList(); List columnValues = dataSet.getValuesAt(column); for (Integer targetRow : rows) { targetValues.add(columnValues.get(targetRow)); } ScalarFunctionManager scalarFunctionManager = DataProviderServices.lookup().getScalarFunctionManager(); ScalarFunction function = scalarFunctionManager.getScalarFunctionByCode(functionCode); if (!CollectionUtils.exists(targetValues, NON_NULL_ELEMENTS)) { return new Double(0); } else { double value = function.scalar(targetValues); return new Double(value); } }
protected void indexColumn(int column) { DataProperty prop = dataSet.getPropertyByColumn(column); // Only label properties are supported for the time being. if (prop.getDomain() instanceof LabelDomain) { List values = dataSet.getValuesAt(column); columnIndexes[column] = new LabelIndex(this, column); columnIndexes[column].indexValues(values); } }