package com.plectix.simulator.simulationclasses.solution; import com.plectix.simulator.interfaces.ConnectedComponentInterface; import com.plectix.simulator.simulationclasses.injections.Injection; import com.plectix.simulator.simulator.KappaSystem; import com.plectix.simulator.staticanalysis.Agent; /*package*/ final class SolutionFourthMode extends AbstractSolutionForHigherModes { private final SuperStorage superStorage; SolutionFourthMode(KappaSystem system) { super(system); superStorage = getSuperStorage(); } @Override protected final void addConnectedComponent(ConnectedComponentInterface component) { superStorage.addConnectedComponent(component); } @Override public final RuleApplicationPoolInterface prepareRuleApplicationPool() { return new StandardRuleApplicationPool(); } @Override public final void addInjectionToPool(RuleApplicationPoolInterface pool, Injection injection) { StraightStorage storage = pool.getStorage(); if (injection.isSuper()) { storage.addConnectedComponent(superStorage.extractComponent(injection)); } else { if (injection.getImageAgent() != null) { ConnectedComponentInterface component = injection.getImageAgent().getConnectedComponent(); for (Agent agent : component.getAgents()) { storage.addAgent(agent); } } } } }