Skip to content

Commit bdf2182

Browse files
fix: personMoney event reference lookup missing in EventsReader (matsim-org#3258)
1 parent 791f39b commit bdf2182

File tree

3 files changed

+36
-37
lines changed

3 files changed

+36
-37
lines changed

matsim/src/main/java/org/matsim/core/events/EventsReaderXMLv1.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -101,25 +101,25 @@ private void startEvent(final Attributes atts) {
101101

102102
// === material related to wait2link below here ===
103103
if (LinkLeaveEvent.EVENT_TYPE.equals(eventType)) {
104-
this.events.processEvent(new LinkLeaveEvent(time,
105-
Id.create(atts.getValue(LinkLeaveEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
104+
this.events.processEvent(new LinkLeaveEvent(time,
105+
Id.create(atts.getValue(LinkLeaveEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
106106
Id.create(atts.getValue(LinkLeaveEvent.ATTRIBUTE_LINK), Link.class)
107107
// had driver id in previous version
108108
));
109109
} else if (LinkEnterEvent.EVENT_TYPE.equals(eventType)) {
110-
this.events.processEvent(new LinkEnterEvent(time,
111-
Id.create(atts.getValue(LinkEnterEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
110+
this.events.processEvent(new LinkEnterEvent(time,
111+
Id.create(atts.getValue(LinkEnterEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
112112
Id.create(atts.getValue(LinkEnterEvent.ATTRIBUTE_LINK), Link.class)
113113
// had driver id in previous version
114114
));
115115
} else if (VehicleEntersTrafficEvent.EVENT_TYPE.equals(eventType) ) {
116116
// (this is the new version, marked by the new events name)
117117

118-
this.events.processEvent(new VehicleEntersTrafficEvent(time,
118+
this.events.processEvent(new VehicleEntersTrafficEvent(time,
119119
Id.create(atts.getValue(HasPersonId.ATTRIBUTE_PERSON), Person.class),
120-
Id.create(atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_LINK), Link.class),
120+
Id.create(atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_LINK), Link.class),
121121
Id.create(atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
122-
atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_NETWORKMODE),
122+
atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_NETWORKMODE),
123123
Double.parseDouble( atts.getValue( VehicleEntersTrafficEvent.ATTRIBUTE_POSITION) )
124124
));
125125
} else if ( "wait2link".equals(eventType) ) {
@@ -140,19 +140,19 @@ private void startEvent(final Attributes atts) {
140140
} else {
141141
position = 1.0 ;
142142
}
143-
this.events.processEvent(new VehicleEntersTrafficEvent(time,
143+
this.events.processEvent(new VehicleEntersTrafficEvent(time,
144144
Id.create(atts.getValue(HasPersonId.ATTRIBUTE_PERSON), Person.class),
145-
Id.create(atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_LINK), Link.class),
145+
Id.create(atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_LINK), Link.class),
146146
vehicleId,
147-
atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_NETWORKMODE),
147+
atts.getValue(VehicleEntersTrafficEvent.ATTRIBUTE_NETWORKMODE),
148148
position
149149
));
150150
} else if (VehicleLeavesTrafficEvent.EVENT_TYPE.equals(eventType)) {
151-
this.events.processEvent(new VehicleLeavesTrafficEvent(time,
152-
Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_DRIVER), Person.class),
153-
Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_LINK), Link.class),
154-
atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_VEHICLE) == null ? null : Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
155-
atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_NETWORKMODE),
151+
this.events.processEvent(new VehicleLeavesTrafficEvent(time,
152+
Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_DRIVER), Person.class),
153+
Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_LINK), Link.class),
154+
atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_VEHICLE) == null ? null : Id.create(atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_VEHICLE), Vehicle.class),
155+
atts.getValue(VehicleLeavesTrafficEvent.ATTRIBUTE_NETWORKMODE),
156156
Double.parseDouble( atts.getValue( VehicleLeavesTrafficEvent.ATTRIBUTE_POSITION) )
157157
));
158158
}
@@ -165,7 +165,7 @@ else if (ActivityEndEvent.EVENT_TYPE.equals(eventType)) {
165165
coord = new Coord( xx, yy ) ;
166166
}
167167
this.events.processEvent(new ActivityEndEvent(
168-
time,
168+
time,
169169
Id.create(atts.getValue(HasPersonId.ATTRIBUTE_PERSON), Person.class),
170170
Id.create(atts.getValue(HasLinkId.ATTRIBUTE_LINK), Link.class),
171171
atts.getValue(HasFacilityId.ATTRIBUTE_FACILITY) == null ? null : Id.create(atts.getValue(HasFacilityId.ATTRIBUTE_FACILITY),
@@ -208,7 +208,7 @@ else if (ActivityEndEvent.EVENT_TYPE.equals(eventType)) {
208208
Id<Link> linkId = linkIdString == null ? null : Id.create(linkIdString, Link.class);
209209
this.events.processEvent(new VehicleAbortsEvent(time, Id.create(atts.getValue(VehicleAbortsEvent.ATTRIBUTE_VEHICLE), Vehicle.class), linkId));
210210
} else if (PersonMoneyEvent.EVENT_TYPE.equals(eventType) || "agentMoney".equals(eventType)) {
211-
this.events.processEvent(new PersonMoneyEvent(time, Id.create(atts.getValue(PersonMoneyEvent.ATTRIBUTE_PERSON), Person.class), Double.parseDouble(atts.getValue(PersonMoneyEvent.ATTRIBUTE_AMOUNT)), atts.getValue(PersonMoneyEvent.ATTRIBUTE_PURPOSE), atts.getValue(PersonMoneyEvent.ATTRIBUTE_TRANSACTION_PARTNER)));
211+
this.events.processEvent(new PersonMoneyEvent(time, Id.create(atts.getValue(PersonMoneyEvent.ATTRIBUTE_PERSON), Person.class), Double.parseDouble(atts.getValue(PersonMoneyEvent.ATTRIBUTE_AMOUNT)), atts.getValue(PersonMoneyEvent.ATTRIBUTE_PURPOSE), atts.getValue(PersonMoneyEvent.ATTRIBUTE_TRANSACTION_PARTNER), atts.getValue(PersonMoneyEvent.ATTRIBUTE_REFERENCE)));
212212
} else if (PersonScoreEvent.EVENT_TYPE.equals(eventType) || "personScore".equals(eventType)) {
213213
this.events.processEvent(new PersonScoreEvent(time, Id.create(atts.getValue(PersonScoreEvent.ATTRIBUTE_PERSON), Person.class), Double.parseDouble(atts.getValue(PersonScoreEvent.ATTRIBUTE_AMOUNT)), atts.getValue(PersonScoreEvent.ATTRIBUTE_KIND)));
214214
} else if (PersonEntersVehicleEvent.EVENT_TYPE.equals(eventType)) {

matsim/src/test/java/org/matsim/core/events/EventsReadersTest.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,9 @@
2929
import static org.junit.jupiter.api.Assertions.assertEquals;
3030
import org.junit.jupiter.api.extension.RegisterExtension;
3131
import org.matsim.api.core.v01.Id;
32-
import org.matsim.api.core.v01.events.ActivityEndEvent;
33-
import org.matsim.api.core.v01.events.ActivityStartEvent;
34-
import org.matsim.api.core.v01.events.LinkEnterEvent;
35-
import org.matsim.api.core.v01.events.LinkLeaveEvent;
36-
import org.matsim.api.core.v01.events.PersonArrivalEvent;
37-
import org.matsim.api.core.v01.events.PersonDepartureEvent;
38-
import org.matsim.api.core.v01.events.PersonStuckEvent;
39-
import org.matsim.api.core.v01.events.VehicleEntersTrafficEvent;
40-
import org.matsim.api.core.v01.events.handler.ActivityEndEventHandler;
41-
import org.matsim.api.core.v01.events.handler.ActivityStartEventHandler;
42-
import org.matsim.api.core.v01.events.handler.LinkEnterEventHandler;
43-
import org.matsim.api.core.v01.events.handler.LinkLeaveEventHandler;
44-
import org.matsim.api.core.v01.events.handler.PersonArrivalEventHandler;
45-
import org.matsim.api.core.v01.events.handler.PersonDepartureEventHandler;
46-
import org.matsim.api.core.v01.events.handler.PersonStuckEventHandler;
47-
import org.matsim.api.core.v01.events.handler.VehicleEntersTrafficEventHandler;
32+
import org.matsim.api.core.v01.TransportMode;
33+
import org.matsim.api.core.v01.events.*;
34+
import org.matsim.api.core.v01.events.handler.*;
4835
import org.matsim.api.core.v01.network.Link;
4936
import org.matsim.core.api.experimental.events.EventsManager;
5037
import org.matsim.testcases.MatsimTestUtils;
@@ -60,7 +47,7 @@ public class EventsReadersTest {
6047

6148
static class TestHandler implements ActivityEndEventHandler, PersonDepartureEventHandler, VehicleEntersTrafficEventHandler,
6249
LinkLeaveEventHandler, LinkEnterEventHandler, PersonArrivalEventHandler, ActivityStartEventHandler,
63-
PersonStuckEventHandler {
50+
PersonStuckEventHandler, PersonMoneyEventHandler {
6451

6552
public int eventCounter = 0;
6653

@@ -141,6 +128,17 @@ public void handleEvent(final PersonStuckEvent event) {
141128
assertEquals("9", event.getLinkId().toString());
142129
}
143130

131+
@Override
132+
public void handleEvent(final PersonMoneyEvent event) {
133+
this.eventCounter++;
134+
assertEquals(9, this.eventCounter, "expected personMoney-Event to be event #9");
135+
assertEquals(21690.0, event.getTime(), 0.0);
136+
assertEquals("9", event.getPersonId().toString());
137+
assertEquals("drtFare", event.getPurpose());
138+
assertEquals(TransportMode.drt, event.getTransactionPartner());
139+
assertEquals(-1.0, event.getAmount(), 0.0);
140+
assertEquals("drt_0", event.getReference());
141+
}
144142
}
145143

146144
@Test
@@ -152,7 +150,7 @@ final void testXmlReader() throws SAXException, ParserConfigurationException, IO
152150
EventsReaderXMLv1 reader = new EventsReaderXMLv1(events);
153151
reader.readFile(utils.getClassInputDirectory() + "events.xml");
154152
events.finishProcessing();
155-
assertEquals(8, handler.eventCounter, "number of read events");
153+
assertEquals(9, handler.eventCounter, "number of read events");
156154
}
157155

158156
@Test
@@ -164,6 +162,6 @@ final void testAutoFormatReaderXml() {
164162
MatsimEventsReader reader = new MatsimEventsReader(events);
165163
reader.readFile(utils.getClassInputDirectory() + "events.xml");
166164
events.finishProcessing();
167-
assertEquals(8, handler.eventCounter, "number of read events");
165+
assertEquals(9, handler.eventCounter, "number of read events");
168166
}
169167
}

matsim/src/test/resources/test/input/org/matsim/core/events/EventsReadersTest/events.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
<event time="21660" person="6" link="7" type="arrival" />
1010
<event time="21670" person="7" link="8" actType="" type="actstart" />
1111
<event time="21680" person="8" link="9" type="stuckAndAbort" />
12-
</events>
12+
<event time="21690" person="9" type="personMoney" amount="-1.0" purpose="drtFare" transactionPartner="drt" reference="drt_0" />
13+
</events>

0 commit comments

Comments
 (0)