public static boolean findDimension(final Crosstab<Number> crosstab, final String dimensionName) { try { final CrosstabDimension dimension = crosstab.getDimension(dimensionName); if (dimension == null) { return false; } } catch (final Exception e) { return false; } return true; }
public CrosstabDimension getDimension(final String dimensionName) { return getDimension(getDimensionIndex(dimensionName)); }
/** * 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(); }
crosstab.getDimension(crosstab.getDimensionIndex(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN)) .getCategoryCount(); final String expandedLabel =
@Metric(order = 5, value = "Total combination count") public int getTotalCombinationCount() { if (_valueCombinationCrosstab == null) { return 0; } return _valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE).getCategoryCount(); }
@Override public Collection<String> getParameterSuggestions() { final Crosstab<?> crosstab = getSingleCrosstab(); final CrosstabDimension patternDimension = crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); return patternDimension.getCategories(); } };
/** * Builds the master crosstab, including all dimensions and categories that * will be included in the final result. * * By default this method will use the first result's crosstab dimensions * and categories, assuming that they are all the same. * * Subclasses can override this method to build the other dimensions. * * @param results * @return */ protected Crosstab<Serializable> createMasterCrosstab(final Collection<? extends R> results) { final R firstResult = results.iterator().next(); final Crosstab<?> firstCrosstab = firstResult.getCrosstab(); final Class<?> valueClass = firstCrosstab.getValueClass(); final CrosstabDimension dimension1 = firstCrosstab.getDimension(0); final CrosstabDimension dimension2 = firstCrosstab.getDimension(1); @SuppressWarnings({ "unchecked", "rawtypes" }) final Crosstab<Serializable> masterCrosstab = new Crosstab(valueClass, dimension1, dimension2); return masterCrosstab; }
/** * * @param crosstabDimensions * @param partialCrosstab * @throws IllegalStateException */ public void createDimensionsValueCombinationCrosstab(final List<CrosstabDimension> crosstabDimensions, final Crosstab<Number> partialCrosstab) throws IllegalStateException { if (partialCrosstab != null) { final CrosstabDimension columnDimension = partialCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); if (crosstabDimensions.size() == 0) { crosstabDimensions.add(columnDimension); // the Value Combination crosstab gets an empty measure // dimension because the measure categories need to be recreated // based on the value combinations found final CrosstabDimension measureDimension = new CrosstabDimension(BooleanAnalyzer.DIMENSION_MEASURE); crosstabDimensions.add(measureDimension); } else { // trying to be smart if (!CrosstabReducerHelper.dimensionExits(crosstabDimensions, columnDimension)) { throw new IllegalStateException( "The crosstabs do not have the same categories in dimension Column"); } } } }
_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("Pattern count") public int getPatternCount() { return getSingleCrosstab().getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN).getCategoryCount(); } }
/** * Puts the given value to the navigated position in the crosstab. * * @param value * the value to put. * @param createCategories * if true, the chosen categories will automatically be created * if they do not already exists in the dimensions of the * crosstab. * @throws IllegalArgumentException * if the position or value is invalid, typically because one or * more dimensions lacks a specified category or the value type * is not acceptable (typically because of class casting issues) * @throws NullPointerException * if some of the specified categories are null */ public void put(final E value, final boolean createCategories) throws IllegalArgumentException, NullPointerException { if (createCategories) { for (int i = 0; i < categories.length; i++) { final String category = categories[i]; final CrosstabDimension dimension = crosstab.getDimension(i); dimension.addCategory(category); } } crosstab.putValue(value, categories); }
@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(); }
@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; }
valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE); final CrosstabDimension columnDimension = valueCombinationCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); final List<String> columnDimCategories = columnDimension.getCategories(); int row = 0;
final CrosstabDimension columnDimension = partialCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); final CrosstabDimension measureDimension = partialCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE);
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; }
crosstab.getDimension(PatternFinderAnalyzer.DIMENSION_NAME_PATTERN); final List<String> patterns = patternDimension.getCategories();
if (partialColumnStatisticsCrosstab != null) { final CrosstabDimension columnDimension = partialColumnStatisticsCrosstab.getDimension(BooleanAnalyzer.DIMENSION_COLUMN); final CrosstabDimension measureDimension = partialColumnStatisticsCrosstab.getDimension(BooleanAnalyzer.DIMENSION_MEASURE); CrosstabReducerHelper .addData(newResultColumnStatistics, partialColumnStatisticsCrosstab, columnDimension,
final Crosstab<Serializable> masterCrosstab = createMasterCrosstab(results); final Class<?> valueClass = masterCrosstab.getValueClass(); final CrosstabDimension dimension1 = masterCrosstab.getDimension(0); final CrosstabDimension dimension2 = masterCrosstab.getDimension(1);
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; }