package com.plectix.simulator.staticanalysis.influencemap.future; import com.plectix.simulator.simulationclasses.action.ActionType; import com.plectix.simulator.staticanalysis.Site; import com.plectix.simulator.staticanalysis.abstracting.AbstractAgent; import com.plectix.simulator.staticanalysis.abstracting.AbstractSite; // TODO rename this class /*package*/ final class MarkAgentWithFuture { private final AbstractAgent agent; private String siteName = Site.DEFAULT_NAME; private ActionType type = ActionType.NONE; public MarkAgentWithFuture(AbstractAgent agent, AbstractSite site, ActionType type) { this.type = type; AbstractAgent agentNew = new AbstractAgent(agent.getName()); this.agent = agentNew; if (site != null) { AbstractSite siteNew = site.clone(); siteNew.setParentAgent(agentNew); agentNew.addSite(siteNew); siteName = siteNew.getName(); } } public MarkAgentWithFuture(AbstractAgent agent) { this.type = ActionType.BREAK; AbstractAgent agentNew = new AbstractAgent(agent.getName()); this.agent = agentNew; for(AbstractSite site : agent.getSitesMap().values()){ AbstractSite siteNew = site.clone(); siteNew.setParentAgent(agentNew); agentNew.addSite(siteNew); siteName = siteNew.getName(); } } public final ActionType getType() { return type; } public final AbstractAgent getAgent() { return agent; } public final AbstractSite getSite(){ return agent.getSiteByName(siteName); } }