22 package org.matsim.withinday.utils;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.Objects;
28 import org.apache.logging.log4j.LogManager;
29 import org.apache.logging.log4j.Logger;
45 private static final Logger
log = LogManager.getLogger(
EditPlans.class ) ;
68 log.debug(
"entering addActivityAtEnd with routingMode=" + routingMode) ;
73 boolean retVal1 =
false;
76 retVal1 = planElements.add(pf.
createLeg(routingMode));
79 final boolean retVal = planElements.add(activity);
89 return (retVal1 && retVal);
102 if ( mainModeBefore.equals( mainModeAfter ) ) {
103 mode = mainModeBefore ;
105 throw new ReplanningException(
"mode not given and mode before removed activity != mode after removed activity; don't know which mode to use") ;
125 System.err.println(
"here310");
127 System.err.println(
"here320");
130 System.err.println(
"here330");
136 if ( ! ( planElements.get(index) instanceof
Activity ) ) {
137 throw new ReplanningException(
"trying to replace a non-activity in the plan by an activity; this is not possible") ;
146 planElements.set(index, newAct) ;
147 System.err.println(
"here340");
155 final List<PlanElement> currentTripElements = tripBeforeAct.
getTripElements();
164 if ( upstreamMode == null ) {
165 upstreamMode = currentMode ;
171 if ( index < planElements.size()-1 ) {
174 if ( downstreamMode==null ) {
190 planElements.add( index, activity ) ;
194 if ( actBefore != null ) {
207 if ( actAfter != null ) {
239 throw new ReplanningException(
"trying to replace a helper activity (stage activity) by a real activity; this is not possible") ;
243 return currentTripElements.contains( ((
PlanAgent)agent).getCurrentPlanElement() ) ;
249 if ( index <= currentIndex ) {
250 throw new ReplanningException(
"trying to replace an activity that lies in the past or is current; this is not possible") ;
254 if ( upstreamMode!=null && !upstreamMode.equals(currentMode) ) {
255 throw new ReplanningException(
"cannot change mode in trip that has already started. Don't set the mode in the request, " 256 +
"or somehow make the agent to abort the current trip first." ) ;
278 for (
int ii=planElements.size()-1 ; ii>index; ii-- ) {
279 if ( planElements.get(ii) instanceof
Activity ) {
293 for (
int ii=0 ; ii<index ; ii++ ) {
294 if ( planElements.get(ii) instanceof
Activity ) {
343 for (
int ii=pes.size()-1 ; ii>index ; ii-- ) {
354 newAct.
setEndTime( Double.POSITIVE_INFINITY ) ;
367 List<Leg> retVal =
new ArrayList<>();
371 if (pe instanceof
Leg) {
372 if ( Objects.equals(mode, ((Leg)pe).getMode() )) {
EditPlans(QSim mobsim, TripRouter tripRouter, EditTrips editTrips, Scenario sc)
Activity getDestinationActivity()
static String identifyMainMode(final List<? extends PlanElement > tripElements)
final EditTrips editTrips
final Activity replaceActivity(MobsimAgent agent, int index, Activity newAct)
EditPlans(QSim mobsim, EditTrips editTrips)
static Plan printPlan(MobsimAgent agent1)
static Activity findRealActBefore(MobsimAgent agent, int index)
final PopulationFactory pf
static List< Leg > findLegsWithModeInFuture(MobsimAgent agent, String mode)
static void assertIf(boolean flag)
Activity getOriginActivity()
static Trip findCurrentTrip(MobsimAgent agent)
boolean addActivityAtEnd(MobsimAgent agent, Activity activity, String routingMode)
Leg createLeg(String legMode)
void checkIfNotStageActivity(Activity origAct)
Activity createActivityFromLinkId(String actType, Id< Link > linkId)
static Integer getCurrentPlanElementIndex(MobsimAgent agent)
Activity createFinalActivity(String type, Id< Link > newLinkId)
static PlanElement getCurrentPlanElement(MobsimAgent agent)
void insertActivity(MobsimAgent agent, int index, Activity activity)
PlanElement removeActivity(MobsimAgent agent, int index, String mode)
static void checkIfNotInPastOrCurrent(MobsimAgent agent, int index)
void rescheduleCurrentActivityEndtime(MobsimAgent agent, double newEndTime)
void flushEverythingBeyondCurrent(MobsimAgent agent)
Trip findTripAfterActivity(Plan plan, Activity activity)
MobsimTimer getSimTimer()
static Trip findTripEndingAtActivity(Activity activity, Plan plan)
void insertActivity(MobsimAgent agent, int index, Activity activity, String upstreamMode, String downstreamMode)
static final boolean isStageActivity(final String activityType)
Population getPopulation()
static boolean checkIfTripHasAlreadyStarted(MobsimAgent agent, final List< PlanElement > currentTripElements)
static void checkIfSameMode(String upstreamMode, final String currentMode)
final void rescheduleActivityEndtime(MobsimAgent agent, int index, double newEndTime)
static int findIndexOfRealActAfter(MobsimAgent agent, int index)
List< PlanElement > getPlanElements()
String getModeOfCurrentOrNextTrip(MobsimAgent agent)
static void rescheduleActivityEnd(MobsimAgent agent, Mobsim mobsim)
static void assertNotNull(Object obj)
static void resetCaches(MobsimAgent agent)
static boolean insertEmptyTrip(Plan plan, Activity fromActivity, Activity toActivity, String mainMode, PopulationFactory pf)
EditPlans(QSim mobsim, TripRouter tripRouter, EditTrips editTrips)
static Integer getCurrentPlanElementIndex(MobsimAgent agent)
void rescheduleActivityEnd(MobsimAgent agent)
final Activity replaceActivity(MobsimAgent agent, int index, Activity newAct, String upstreamMode, String downstreamMode)
final void rescheduleActivityEnd(MobsimAgent agent)
static Activity findRealActAfter(MobsimAgent agent, int index)
PopulationFactory getFactory()
boolean isRealActivity(PlanElement pe)
PlanElement removeActivity(MobsimAgent agent, int index)
boolean isAtRealActivity(MobsimAgent agent)
static int indexOfPlanElement(MobsimAgent agent, PlanElement pe)
void setEndTime(final double seconds)
EditPlans(QSim mobsim, TripRouter tripRouter, EditTrips editTrips, PopulationFactory pf)
List< PlanElement > getTripElements()
final boolean replanCurrentTrip(MobsimAgent agent, double now, String routingMode)
static Trip findTripStartingAtActivity(final Activity activity, final Plan plan)
static Plan getModifiablePlan(MobsimAgent agent)