MATSIM
SnapshotWritersModule.java
Go to the documentation of this file.
1 /*
2  * *********************************************************************** *
3  * * project: org.matsim.*
4  * * SnapshotWritersModule.java
5  * * *
6  * * *********************************************************************** *
7  * * *
8  * * copyright : (C) 2015 by the members listed in the COPYING, *
9  * * LICENSE and WARRANTY file. *
10  * * email : info at matsim dot org *
11  * * *
12  * * *********************************************************************** *
13  * * *
14  * * This program is free software; you can redistribute it and/or modify *
15  * * it under the terms of the GNU General Public License as published by *
16  * * the Free Software Foundation; either version 2 of the License, or *
17  * * (at your option) any later version. *
18  * * See also COPYING, LICENSE and WARRANTY file *
19  * * *
20  * * ***********************************************************************
21  */
22 
23 package org.matsim.vis.snapshotwriters;
24 
30 
31 import jakarta.inject.Inject;
32 import jakarta.inject.Provider;
33 import java.util.Collection;
34 
36 
37 public class SnapshotWritersModule extends AbstractModule {
38 
39  public static final String GENERATE_SNAPSHOT_FOR_LINK_KEY = "generateSnapshotForLink";
40 
41  @Override
42  public void install() {
43  if (getConfig().controller().getSnapshotFormat().contains(SnapshotFormat.transims)) {
44  addSnapshotWriterBinding().toProvider(TransimsSnapshotWriterFactory.class);
45  }
46  if (getConfig().controller().getSnapshotFormat().contains(SnapshotFormat.positionevents)) {
47  addSnapshotWriterBinding().toProvider(PositionEventsWriterFactory.class);
48  }
49  if (getConfig().controller().getWriteSnapshotsInterval() != 0) {
51  }
52  }
53 
54  private static class SnapshotWriterManagerProvider implements Provider<MobsimListener> {
55 
59  private final Collection<com.google.inject.Provider<SnapshotWriter>> snapshotWriters;
60 
61  @Inject
62  private SnapshotWriterManagerProvider(QSimConfigGroup qSimConfigGroup, ControllerConfigGroup controllerConfigGroup,
63  ReplanningContext iterationContext,
64  Collection<com.google.inject.Provider<SnapshotWriter>> snapshotWriters) {
65  this.qSimConfigGroup = qSimConfigGroup;
66  this.controllerConfigGroup = controllerConfigGroup;
67  this.iterationContext = iterationContext;
68  this.snapshotWriters = snapshotWriters;
69  }
70 
71  @Override
72  public MobsimListener get() {
73  if (iterationContext.getIteration() % controllerConfigGroup.getWriteSnapshotsInterval() == 0) {
74  SnapshotWriterManager manager = new SnapshotWriterManager((int) qSimConfigGroup.getSnapshotPeriod(), qSimConfigGroup.getFilterSnapshots());
75  for (com.google.inject.Provider<SnapshotWriter> snapshotWriter : this.snapshotWriters) {
76  manager.addSnapshotWriter(snapshotWriter.get());
77  }
78  return manager;
79  } else {
80  return new NoopMobsimListener();
81  }
82  }
83 
84  private static class NoopMobsimListener implements MobsimListener {
85  }
86  }}
final com.google.inject.binder.LinkedBindingBuilder< MobsimListener > addMobsimListenerBinding()
final com.google.inject.binder.LinkedBindingBuilder< SnapshotWriter > addSnapshotWriterBinding()
final Collection< com.google.inject.Provider< SnapshotWriter > > snapshotWriters
final void addSnapshotWriter(SnapshotWriter snapshotWriter)
SnapshotWriterManagerProvider(QSimConfigGroup qSimConfigGroup, ControllerConfigGroup controllerConfigGroup, ReplanningContext iterationContext, Collection< com.google.inject.Provider< SnapshotWriter >> snapshotWriters)