1 package org.matsim.analysis;
3 import jakarta.inject.Inject;
4 import org.apache.commons.csv.CSVFormat;
5 import org.apache.commons.csv.CSVPrinter;
6 import org.apache.logging.log4j.LogManager;
7 import org.apache.logging.log4j.Logger;
19 import java.io.BufferedWriter;
20 import java.io.IOException;
21 import java.util.ArrayList;
22 import java.util.List;
38 void writeCsv(
int iteration) {
46 CSVPrinter csvPrinter =
new CSVPrinter(bufferedWriter, CSVFormat.Builder.create()
48 .setHeader(header).build());
55 }
catch (IOException e) {
66 List<Object> line =
new ArrayList<>();
70 line.add(personId.toString() +
"_" + id);
71 line.add(act.getType());
73 line.add(act.getStartTime().isDefined() ? act.getStartTime().seconds() :
"");
74 line.add(act.getEndTime().isDefined() ? act.getEndTime().seconds() :
"");
75 line.add(act.getMaximumDuration().isDefined() ? act.getMaximumDuration().seconds() :
"");
76 line.add(act.getLinkId() != null ? act.getLinkId() :
"");
77 line.add(act.getFacilityId() != null ? act.getFacilityId():
"");
79 if (act.getCoord() != null) {
80 line.add(act.getCoord().getX());
81 line.add(act.getCoord().getY());
87 for (String attribute : attributes) {
88 Object value = plan.getAttributes().getAttribute(attribute);
89 String result = value != null ? String.valueOf(value) :
"";
93 csvPrinter.printRecord(line);
100 .flatMap(act -> act.getAttributes().getAsMap().keySet().stream())
101 .sorted().distinct().toList();
105 List<String> header =
new ArrayList<>();
106 header.add(
"person");
107 header.add(
"activity_number");
108 header.add(
"activity_id");
109 header.add(
"activity_type");
110 header.add(
"start_time");
111 header.add(
"end_time");
112 header.add(
"maximum_duration");
113 header.add(
"link_id");
114 header.add(
"facility_id");
115 header.add(
"coord_x");
116 header.add(
"coord_y");
117 header.addAll(attributes);
118 return header.toArray(String[]::
new);
static String [] prepareHeader(List< String > attributes)
final String getIterationFilename(final int iteration, final String filename)
OutputDirectoryHierarchy outputDirectoryHierarchy
static List< Activity > getActivities(final Plan plan, final StageActivityHandling stageActivityHandling)
List< String > prepareAttributes()
static BufferedWriter getBufferedWriter(URL url, Charset charset, boolean append)
ExperiencedPlansService experiencedPlansService
static void writeActivitiesPerPerson(Id< Person > personId, Plan plan, List< String > attributes, CSVPrinter csvPrinter)
final GlobalConfigGroup global()
IdMap< Person, Plan > getExperiencedPlans()
String getDefaultDelimiter()