/** * Test multi composite. */ @Test public void testComposite() { final ModelManager mm = ModelManager.builder() .add(new ModelA.Builder()) .build(); final Iterable<Class<?>> classes = transform(mm.getModels(), toClass()); assertThat(classes).containsAllOf(ModelA.class, ModelAsub1.class, ModelAsub1sub1.class, ModelAsub2.class).inOrder(); }
Simulator(Builder b) { modelManager = b.mmBuilder .add(SimulatorModelBuilder.create(this)) .addDefaultProvider( RandomModel.builder().withRandomGenerator( StochasticSuppliers.constant(b.rng))) .addDefaultProvider( TimeModel.builder() .withTickLength(b.tickLength) .withTimeUnit(b.timeUnit)) .build(); toUnregister = new LinkedHashSet<>(); clock = modelManager.getModel(TimeModel.class); rand = modelManager.getModel(RandomModel.class); }
/** * Adds the specified {@link CompositeModelBuilder} and its children to the * manager. * @param builder The builder to add. * @return This, as per the builder pattern. */ public Builder add(CompositeModelBuilder<?, ?> builder) { doAdd(builder); for (final ModelBuilder<?, ?> mb : builder.getChildren()) { add(mb); } return this; }
/** * Adds the specified {@link ModelBuilder} to the manager. The * {@link ModelBuilder} will be used to obtain a {@link Model} instance. * @param builder The builder to add. * @return This, as per the builder pattern. */ public Builder add(ModelBuilder<?, ?> builder) { if (builder instanceof CompositeModelBuilder<?, ?>) { return add((CompositeModelBuilder<?, ?>) builder); } doAdd(builder); return this; }
/** * Adds the specified {@link ModelBuilder} to the simulator. The * {@link ModelBuilder} will be used to obtain a {@link Model} instance that * will be added to the simulator. * @param builder The builder to add. * @return This, as per the builder pattern. */ public Builder addModel(ModelBuilder<?, ?> builder) { mmBuilder.add(builder); return this; }