Thank you for this answer! It helped fine.
And with help by - Thanks Bernhard :-)
I tryed following code with success!
import java.time.Month;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.rieders.finmgmtbasic.dbmodel.msTUmsatzClassification;
import com.rieders.finmgmtbasic.dbstorage.dataRoot;
import com.rieders.finmgmtbasic.dbstorage.dbHandler;
import one.microstream.storage.types.EmbeddedStorageManager;
public class TestUmsByGroup
{
public static void main(final String[] args)
{
final EmbeddedStorageManager storage = dbHandler.getStoragemanager();
if(storage.root() == null)
{
System.out.println("No existing Database found ");
}
else
{
final dataRoot root = (dataRoot)storage.root();
final List<msTUmsatzClassification> myIntList = new ArrayList<>(root.allUmsClassifications);
final Map<Integer, Map<Integer, Map<Integer, Double>>> aggregatedObjects =
myIntList
.parallelStream()
.collect(
Collectors.groupingBy(TestUmsByGroup::getJahr,
Collectors.groupingBy(TestUmsByGroup::getMonth,
Collectors.groupingBy(msTUmsatzClassification::getL1Id,
Collectors.summingDouble(msTUmsatzClassification::getDbetrag)))));
aggregatedObjects.forEach((year, monthMap) -> {
monthMap.forEach((month, typeMap) -> {
typeMap.forEach((type, sum) -> {
System.out.println(year + "/" + Month.of(month) + "/" + type + " = " + sum);
});
});
});
storage.shutdown();
}
}
// static helperMonat
private static int getMonth(final msTUmsatzClassification msTUmsatzClassification)
{
final Calendar cal = Calendar.getInstance();
cal.setTime(msTUmsatzClassification.getDatum());
return cal.get(Calendar.MONTH) + 1;
}
// static helperjahr
private static int getJahr(final msTUmsatzClassification msTUmsatzClassification)
{
final Calendar cal = Calendar.getInstance();
cal.setTime(msTUmsatzClassification.getDatum());
return cal.get(Calendar.YEAR);
}
}