public Crosstab(final Class<E> valueClass, final String... dimensionNames) { this.valueClass = valueClass; dimensions = new ArrayList<>(); for (final String name : dimensionNames) { dimensions.add(new CrosstabDimension(name)); } }
public static Crosstab<Serializable> createCrosstab() { final CrosstabDimension measuresDimension = new CrosstabDimension(DIMENSION_NAME_MEASURES); measuresDimension.addCategory(MEASURE_MATCH_COUNT); measuresDimension.addCategory(MEASURE_SAMPLE); final CrosstabDimension patternDimension = new CrosstabDimension(DIMENSION_NAME_PATTERN); return new Crosstab<>(Serializable.class, measuresDimension, patternDimension); }
/** * * @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"); } } } }
@Override public CrosstabResult getResult() { final CrosstabDimension columnDimension = new CrosstabDimension("Column"); final CrosstabDimension weekNumberDimension = new CrosstabDimension("Week number"); final SortedSet<Integer> weekNumbers = new TreeSet<>(); for (final InputColumn<Date> col : dateColumns) { final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); final Set<Integer> weekNumbersOfColumn = countMap.keySet(); weekNumbers.addAll(weekNumbersOfColumn); } for (final Integer weekNumber : weekNumbers) { weekNumberDimension.addCategory(weekNumber + ""); } final Crosstab<Integer> crosstab = new Crosstab<>(Integer.class, columnDimension, weekNumberDimension); for (final InputColumn<Date> col : dateColumns) { columnDimension.addCategory(col.getName()); final CrosstabNavigator<Integer> nav = crosstab.where(columnDimension, col.getName()); final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); for (final Entry<Integer, AtomicInteger> entry : countMap.entrySet()) { final Integer weekNumber = entry.getKey(); final AtomicInteger count = entry.getValue(); nav.where(weekNumberDimension, weekNumber + "").put(count.intValue()); } } return new CrosstabResult(crosstab); }
@Override public CrosstabResult getResult() { final CrosstabDimension columnDimension = new CrosstabDimension("Column"); final CrosstabDimension yearDimension = new CrosstabDimension("Year"); final SortedSet<Integer> years = new TreeSet<>(); for (final InputColumn<Date> col : dateColumns) { final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); final Set<Integer> yearsOfColumn = countMap.keySet(); years.addAll(yearsOfColumn); } for (final Integer year : years) { yearDimension.addCategory(year + ""); } final Crosstab<Integer> crosstab = new Crosstab<>(Integer.class, columnDimension, yearDimension); for (final InputColumn<Date> col : dateColumns) { columnDimension.addCategory(col.getName()); final CrosstabNavigator<Integer> nav = crosstab.where(columnDimension, col.getName()); final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); for (final Entry<Integer, AtomicInteger> entry : countMap.entrySet()) { final Integer year = entry.getKey(); final AtomicInteger count = entry.getValue(); nav.where(yearDimension, year + "").put(count.intValue()); } } return new CrosstabResult(crosstab); }
@Override public CrosstabResult getResult() { final CrosstabDimension columnDimension = new CrosstabDimension("Column"); final CrosstabDimension monthDimension = new CrosstabDimension("Month"); for (final Month month : Month.values()) { final String monthName = toMonthName(month); monthDimension.addCategory(monthName); } final Crosstab<Integer> crosstab = new Crosstab<>(Integer.class, columnDimension, monthDimension); for (final InputColumn<Date> col : dateColumns) { columnDimension.addCategory(col.getName()); final CrosstabNavigator<Integer> nav = crosstab.where(columnDimension, col.getName()); final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); for (final Entry<Integer, AtomicInteger> entry : countMap.entrySet()) { final Integer monthConstant = entry.getKey(); final Month month = Month.getByCalendarConstant(monthConstant); final AtomicInteger count = entry.getValue(); final String monthName = toMonthName(month); nav.where(monthDimension, monthName).put(count.intValue()); } } return new CrosstabResult(crosstab); }
@Override public CrosstabResult getResult() { final CrosstabDimension columnDimension = new CrosstabDimension("Column"); final CrosstabDimension weekdayDimension = new CrosstabDimension("Weekday"); weekdayDimension.addCategory("Sunday").addCategory("Monday").addCategory("Tuesday").addCategory("Wednesday") .addCategory("Thursday").addCategory("Friday").addCategory("Saturday"); final Crosstab<Integer> crosstab = new Crosstab<>(Integer.class, columnDimension, weekdayDimension); for (final InputColumn<Date> col : dateColumns) { columnDimension.addCategory(col.getName()); final CrosstabNavigator<Integer> nav = crosstab.where(columnDimension, col.getName()); final Map<Integer, AtomicInteger> countMap = distributionMap.get(col); nav.where(weekdayDimension, "Sunday").put(countMap.get(Calendar.SUNDAY).get()); nav.where(weekdayDimension, "Monday").put(countMap.get(Calendar.MONDAY).get()); nav.where(weekdayDimension, "Tuesday").put(countMap.get(Calendar.TUESDAY).get()); nav.where(weekdayDimension, "Wednesday").put(countMap.get(Calendar.WEDNESDAY).get()); nav.where(weekdayDimension, "Thursday").put(countMap.get(Calendar.THURSDAY).get()); nav.where(weekdayDimension, "Friday").put(countMap.get(Calendar.FRIDAY).get()); nav.where(weekdayDimension, "Saturday").put(countMap.get(Calendar.SATURDAY).get()); } return new CrosstabResult(crosstab); }
@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; }
@Override public CharacterSetDistributionResult getResult() { final CrosstabDimension measureDimension = new CrosstabDimension("Measures"); final Set<String> unicodeSetNames = UNICODE_SETS.keySet(); for (final String name : unicodeSetNames) { final CrosstabDimension columnDimension = new CrosstabDimension("Column");
@Override public BooleanAnalyzerResult getResult() { CrosstabDimension measureDimension = new CrosstabDimension(DIMENSION_MEASURE); measureDimension.addCategory(MEASURE_ROW_COUNT); measureDimension.addCategory(MEASURE_NULL_COUNT); measureDimension.addCategory(MEASURE_FALSE_COUNT); CrosstabDimension columnDimension = new CrosstabDimension(DIMENSION_COLUMN); for (final InputColumn<Boolean> column : _columns) { columnDimension.addCategory(column.getName()); measureDimension = new CrosstabDimension(DIMENSION_MEASURE); columnDimension = new CrosstabDimension(DIMENSION_COLUMN); for (final InputColumn<Boolean> column : _columns) { columnDimension.addCategory(column.getName());
@Override public DateAndTimeAnalyzerResult getResult() { final CrosstabDimension measureDimension = new CrosstabDimension(DIMENSION_MEASURE); measureDimension.addCategory(MEASURE_ROW_COUNT); measureDimension.addCategory(MEASURE_NULL_COUNT); final CrosstabDimension columnDimension = new CrosstabDimension(DIMENSION_COLUMN); for (final InputColumn<Date> column : _columns) { columnDimension.addCategory(column.getName());
@Override public NumberAnalyzerResult getResult() { final CrosstabDimension measureDimension = new CrosstabDimension(DIMENSION_MEASURE); measureDimension.addCategory(MEASURE_ROW_COUNT); measureDimension.addCategory(MEASURE_NULL_COUNT); final CrosstabDimension columnDimension = new CrosstabDimension(DIMENSION_COLUMN); for (final InputColumn<? extends Number> column : _columns) { columnDimension.addCategory(column.getName());
@Override public StringAnalyzerResult getResult() { logger.info("getResult()"); final CrosstabDimension measureDimension = new CrosstabDimension(DIMENSION_MEASURES); measureDimension.addCategory(MEASURE_ROW_COUNT); measureDimension.addCategory(MEASURE_NULL_COUNT); measureDimension.addCategory(MEASURE_MIN_WORDS); final CrosstabDimension columnDimension = new CrosstabDimension(DIMENSION_COLUMN);