1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

simplify TourActivities.removeActivity() by handling non-job activities separately

This commit is contained in:
Michal Maciejewski 2019-05-09 11:17:14 +02:00
parent 4ac181165c
commit dd122b54e6
No known key found for this signature in database
GPG key ID: 015947E60A2AD77B

View file

@ -154,36 +154,35 @@ public class TourActivities {
* @return true if activity has been removed, false otherwise
*/
public boolean removeActivity(TourActivity activity) {
Job job = null;
if (activity instanceof JobActivity) {
job = ((JobActivity) activity).getJob();
if (!(activity instanceof JobActivity)) {
//assumes that an activity can be added only once to tourActivities
return tourActivities.remove(activity);
}
Job job = ((JobActivity) activity).getJob();
boolean jobIsAlsoAssociateToOtherActs = false;
boolean actRemoved = false;
List<TourActivity> acts = new ArrayList<>(tourActivities);
for (TourActivity act : acts) {
for (TourActivity act : new ArrayList<>(tourActivities)) {
if (act == activity) {
tourActivities.remove(act);
if (job == null || jobIsAlsoAssociateToOtherActs) {
// this is not a job activity OR other activities also refer to job --> do not remove job
if (jobIsAlsoAssociateToOtherActs) {
// other activities also refer to job --> do not remove job
// thus no need to iterate any further
return true;
}
actRemoved = true;
} else {
if (job != null && act instanceof JobActivity) {
if (((JobActivity) act).getJob().equals(job)) {
if (actRemoved) {
// other activities also refer to job --> do not remove job
// thus no need to iterate any further
return true;
}
jobIsAlsoAssociateToOtherActs = true;
if (act instanceof JobActivity && ((JobActivity) act).getJob().equals(job)) {
if (actRemoved) {
// other activities also refer to job --> do not remove job
// thus no need to iterate any further
return true;
}
jobIsAlsoAssociateToOtherActs = true;
}
}
}
if (!jobIsAlsoAssociateToOtherActs && actRemoved) {
if (actRemoved) {
jobs.remove(job);
}
return actRemoved;