code: private MultiKeyMap getData(PivotField dataField) {
  		MultiKeyMap data = new MultiKeyMap();
  		List<List<Object>> rowKeys = getRowKeys();
  		System.out.println("rowKeys.size() = " + rowKeys.size());
  		List<List<Object>> columnKeys = getColumnKeys();
  		System.out.println("columnKeys.size() = " + columnKeys.size());
  		
  		List<PivotField> rowFields = getFields(PivotField.Area.ROW);
  		List<PivotField> columnFields = getFields(PivotField.Area.COLUMN);
  		for (List<Object> rowKey : rowKeys) {
  			for (List<Object> columnKey : columnKeys) {
  				Map<Integer, Object> rowFilter = getFilter(rowFields, rowKey);
  				Map<Integer, Object> columnFilter = getFilter(columnFields, columnKey);
  				Map<Integer, Object> filter = new HashMap<Integer, Object>(rowFilter);
  				filter.putAll(columnFilter);				
  				List<Object> values = getValues(dataField, filter);
  				if (!CollectionUtils.isEmpty(values)) {
  					/*
  					System.out.println("filter = " + filter);
  					System.out.println("values = " + values);
  					System.out.println(values.size());
  					*/
  					Object summary = PivotUtils.getSummary(dataField, values);
  //					System.out.println("summary = " + summary);
  					data.put(rowKey, columnKey, summary);
  				}
  			}
  		}
  		
  		return data;
  	}
docs: /*
  TODO: trebuie imbunatatita metoda asta. Am facut un test pe un tabel
  cu 4500 inregistrari si 7 coloane (nextreports downloads). Am observat ca
  la 86 chei pe row si 212 chei pe column am 18.232 (86 x 212) combinatii.
  Daca in getValues se sta 3,25 ms (cum am obtinut) rezulta un total de
  5576 ms. Cred ca ar trebuii sa parcurg o singura data inregistrarile din baza.