public String[] getDimensionNames() { final int size = dimensions.size(); final String[] result = new String[size]; for (int i = 0; i < size; i++) { result[i] = dimensions.get(i).getName(); } return result; }
public int getDimensionIndex(final String dimensionName) { if (dimensionName != null) { final int size = dimensions.size(); for (int i = 0; i < size; i++) { if (dimensionName.equals(dimensions.get(i).getName())) { return i; } } } throw new IllegalArgumentException("No such dimension: " + dimensionName); }
public CrosstabNavigator<E> where(final CrosstabDimension dimension, final String isCategory) { return where(dimension.getName(), isCategory); }
private String getKey(final String[] categories) throws IllegalArgumentException, NullPointerException { if (categories.length != dimensions.size()) { throw new IllegalArgumentException( "Not all dimensions have been specified (differences in size of parameter and Crosstab's dimensions)"); } for (int i = 0; i < categories.length; i++) { if (categories[i] == null) { final CrosstabDimension dimension = dimensions.get(i); throw new NullPointerException( "Not all dimensions have been specified ('" + dimension.getName() + "' is null)"); } } final StringBuilder sb = new StringBuilder(); for (int i = 0; i < categories.length; i++) { final CrosstabDimension dimension = dimensions.get(i); final String category = categories[i]; if (!dimension.containsCategory(category)) { throw new IllegalArgumentException( "Unknown category [" + category + "] for dimension [" + dimension.getName() + "]"); } if (i != 0) { sb.append('^'); } sb.append(category); } return sb.toString(); }
@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; }