21 package org.matsim.analysis.personMoney;
23 import com.google.inject.Inject;
24 import org.apache.commons.csv.CSVFormat;
25 import org.apache.commons.csv.CSVPrinter;
26 import org.apache.logging.log4j.LogManager;
31 import java.io.IOException;
32 import java.nio.file.Files;
33 import java.nio.file.Paths;
34 import java.util.HashMap;
36 import java.util.TreeMap;
46 private final String
DEL;
54 public void reset(
int iteration) {
55 personMoneyAmountSumByPurposeAndTransactionPartner.clear();
60 String purpose =
event.getPurpose() == null ?
"null" :
event.getPurpose();
61 String transactionPartner =
event.getTransactionPartner() == null ?
"null" :
event.getTransactionPartner();
62 Map<String, Double> transactionPartnerMap = personMoneyAmountSumByPurposeAndTransactionPartner.computeIfAbsent(purpose, k ->
new HashMap<>());
63 transactionPartnerMap.put(transactionPartner, event.
getAmount() + transactionPartnerMap.getOrDefault(transactionPartner, 0.0));
66 void writeOutput(String outputFilename) {
67 try (CSVPrinter csvPrinter =
new CSVPrinter(
68 Files.newBufferedWriter(Paths.get(outputFilename)),
69 CSVFormat.DEFAULT.withDelimiter(DEL.charAt(0)))) {
70 csvPrinter.printRecord(
"purpose",
"transactionPartner",
"sumAmount");
75 for (Map.Entry<String, Map<String, Double>> entryPurposeLevel: purpose2EntriesSorted.entrySet()) {
76 Map<String, Double> transactionPartner2EntriesSorted =
new TreeMap<>(entryPurposeLevel.getValue());
77 for (Map.Entry<String, Double> entryTransactionPartnerLevel: transactionPartner2EntriesSorted.entrySet()) {
78 csvPrinter.printRecord(entryPurposeLevel.getKey(), entryTransactionPartnerLevel.getKey(), entryTransactionPartnerLevel.getValue());
81 }
catch (IOException e) {
82 LogManager.getLogger(getClass()).error(
"Could not write " + outputFilename +
".");
void reset(int iteration)
void handleEvent(PersonMoneyEvent event)
final Map< String, Map< String, Double > > personMoneyAmountSumByPurposeAndTransactionPartner
String getDefaultDelimiter()