@Override public Iterator<String> iterator() { return getCategories().iterator(); }
private int getWidth(final CrosstabDimension verticalDimension) { final List<String> categories = verticalDimension.getCategories(); int longestCategory = 0; for (final String category : categories) { longestCategory = Math.max(longestCategory, category.length()); } return longestCategory; }
/** * Because the {@link BooleanAnalyzer} is also wrapped by other analyzers * which internally create transformed columns, we need to expose the * metrics here based on string names instead of {@link InputColumn} * objects. This method is used to provide suggestions for all these string * column names. * * @return */ private List<String> getColumnNameSuggestions() { final CrosstabDimension columnDimension = _columnStatisticsCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); return columnDimension.getCategories(); }
@Override public void beginTable(final Crosstab<?> crosstab, final List<CrosstabDimension> horizontalDimensions, final List<CrosstabDimension> verticalDimensions) { sb = new StringBuilder(); horizontalDimensionWidth = 0; for (final CrosstabDimension dimension : horizontalDimensions) { final List<String> categories = dimension.getCategories(); for (final String category : categories) { horizontalDimensionWidth = Math.max(horizontalDimensionWidth, category.length()); } } // minimum width = 6 horizontalDimensionWidth = Math.max(horizontalDimensionWidth, 6); if (ReflectionUtils.is(crosstab.getValueClass(), Number.class)) { leftAligned = false; } else { leftAligned = true; } }
@Override public Collection<String> getParameterSuggestions() { final Crosstab<?> crosstab = getSingleCrosstab(); final CrosstabDimension patternDimension = crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); return patternDimension.getCategories(); } };
private void navigateOnAxis(final List<CrosstabDimension> dimensionsOnAxis, final int cellIndex, final int cellCount, final CrosstabNavigator<?> navigator) { int colspan = cellCount; int category = 0; int localIndex = cellIndex; for (int k = 0; k < dimensionsOnAxis.size(); k++) { final CrosstabDimension dimension = dimensionsOnAxis.get(k); final int categoryCount = dimension.getCategoryCount(); final int offset = category * colspan; colspan = colspan / categoryCount; localIndex = localIndex - offset; category = localIndex / colspan; final String categoryName = dimension.getCategories().get(category); navigator.where(dimension, categoryName); } } }
_valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN).getCategories(); final List<String> measureCategories = _valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE).getCategories(); for (final String category : measureCategories) { final StringBuilder sb = new StringBuilder();
@Metric(order = 1, value = "Row count") public Number getRowCount() { final CrosstabDimension columnDimension = _columnStatisticsCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); return _columnStatisticsCrosstab.where(BooleanAnalyzer.DIMENSION_MEASURE, BooleanAnalyzer.MEASURE_ROW_COUNT) .where(columnDimension, columnDimension.getCategories().get(0)).get(); }
/** * Add the values of partial crosstab to the main crosstab * * @param mainCrosstab * - main crosstab * @param partialCrosstab * - partial crosstab */ public static void addData(final Crosstab<Number> mainCrosstab, final Crosstab<Number> partialCrosstab, final CrosstabDimension columnDimension, final CrosstabDimension measureDimension) { if (partialCrosstab != null) { final CrosstabNavigator<Number> mainNavigator = new CrosstabNavigator<>(mainCrosstab); final CrosstabNavigator<Number> nav = new CrosstabNavigator<>(partialCrosstab); for (final String columnCategory : columnDimension.getCategories()) { // just navigate through the dimensions because is the column // dimension nav.where(columnDimension, columnCategory); mainNavigator.where(columnDimension, columnCategory); // navigate and sum up data final List<String> categories = measureDimension.getCategories(); for (final String measureCategory : categories) { sumUpData(mainNavigator, nav, measureDimension, measureCategory); } } } }
final CrosstabDimension measureDimension = partialCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE); final List<String> columnDimCategories = columnDimension.getCategories(); final List<String> measureCategories = measureDimension.getCategories();
private int getTotalCount() { int sum = 0; final Crosstab<?> crosstab = getSingleCrosstab(); final CrosstabDimension patternDimension = crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); final List<String> categories = patternDimension.getCategories(); for (final String category : categories) { final Object value = crosstab.where(patternDimension, category) .where(PatternFinderAnalyzer.DIMENSION_NAME_MEASURES, PatternFinderAnalyzer.MEASURE_MATCH_COUNT) .get(); if (value instanceof Number) { sum += ((Number) value).intValue(); } } return sum; }
final CrosstabDimension columnDimension = valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); final List<String> columnDimCategories = columnDimension.getCategories(); int row = 0; for (final Entry<ValueCombination<Number>, Number> entry : entries) {
_valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN).getCategories(); if (bools.length != columnCategories.size() - 1) { _valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE).getCategories(); for (final String category : measureCategories) { final CrosstabNavigator<Number> nav =
final CrosstabDimension patternDimension = crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); final List<String> patterns = patternDimension.getCategories();
public int getMatchCount(final String pattern) { final Crosstab<?> crosstab = getSingleCrosstab(); final CrosstabDimension patternDimension = crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); final List<String> categories = patternDimension.getCategories(); for (final String category : categories) { final SimpleStringPattern stringPattern = new SimpleStringPattern(category, category, _tokenizerConfiguration); if (stringPattern.matches(pattern)) { final Object value = crosstab.where(patternDimension, category) .where(PatternFinderAnalyzer.DIMENSION_NAME_MEASURES, PatternFinderAnalyzer.MEASURE_MATCH_COUNT) .get(); if (value instanceof Number) { return ((Number) value).intValue(); } } } return 0; }
@Override protected Crosstab<Serializable> createMasterCrosstab(final Collection<? extends CrosstabResult> results) { final CrosstabResult firstResult = results.iterator().next(); final Class<?> valueClass = firstResult.getCrosstab().getValueClass(); final Set<String> categories1 = createColumnDimensionCategorySet(); final Set<String> categories2 = createMeasureDimensionCategorySet(); for (final CrosstabResult crosstabResult : results) { final Crosstab<?> crosstab = crosstabResult.getCrosstab(); categories1.addAll(crosstab.getDimension(0).getCategories()); categories2.addAll(crosstab.getDimension(1).getCategories()); } final CrosstabDimension dimension1 = new CrosstabDimension(firstResult.getCrosstab().getDimension(0).getName()); dimension1.addCategories(categories1); final CrosstabDimension dimension2 = new CrosstabDimension(firstResult.getCrosstab().getDimension(1).getName()); dimension2.addCategories(categories2); @SuppressWarnings({ "unchecked", "rawtypes" }) final Crosstab<Serializable> crosstab = new Crosstab(valueClass, dimension1, dimension2); return crosstab; }
for (final String category : dimension.getCategories()) { callback.horizontalHeaderCell(category, dimension, colspan);