package com.plectix.simulator.simulationclasses.action; import com.plectix.simulator.interfaces.ConnectedComponentInterface; import com.plectix.simulator.simulationclasses.injections.Injection; import com.plectix.simulator.simulationclasses.solution.RuleApplicationPoolInterface; import com.plectix.simulator.simulator.SimulationData; import com.plectix.simulator.staticanalysis.Agent; import com.plectix.simulator.staticanalysis.Rule; import com.plectix.simulator.staticanalysis.stories.ActionOfAEvent; /** * Class implements "NONE" action type. * @author avokhmin * @see CActionType */ public class DefaultAction extends Action { /** * Constructor of CDefaultAction.<br> * <br> * Example:<br> * <code>A(x)->A(x)</code>, creates <code>NONE</code> action.<br> * <code>siteFrom</code> - site "x" from agent "A" from left handSide.<br> * <code>siteTo</code> - site "x" from agent "A" from right handSide.<br> * <code>ccL</code> - connected component "A(x)" from left handSide.<br> * <code>ccR</code> - connected component "A(x)" from right handSide.<br> * <code>rule</code> - rule "A(x)->A(x)".<br> * */ public DefaultAction(Rule rule, Agent sourceAgent, Agent targetAgent, ConnectedComponentInterface leftHandSideComponent, ConnectedComponentInterface rightHandSideComponent) { super(rule, sourceAgent, targetAgent, leftHandSideComponent, rightHandSideComponent); setType(ActionType.NONE); } @Override public final void doAction(RuleApplicationPoolInterface ruleApplicationPool, Injection injection, ActionObserverInteface eventContainer, SimulationData simulationData) { int agentIdInCC = getAgentIdInCCBySideId(this.getTargetAgent()); Agent agentFromInSolution = injection .getAgentFromImageById(agentIdInCC); getRightCComponent().addAgentFromSolutionForRHS(agentFromInSolution); eventContainer.addToEvent(agentFromInSolution,ActionOfAEvent.TEST,getSourceAgent()); } }