package com.plectix.simulator.staticanalysis.contactmap;
import java.util.ArrayList;
import java.util.List;
import com.plectix.simulator.staticanalysis.abstracting.AbstractSite;
import com.plectix.simulator.util.NameDictionary;
public final class ContactMapChangedSite {
// TODO need to be implement one interface with ChangedSite
private AbstractSite site = null;
private boolean hasLinkState;
private boolean hasInternalState;
private final List<Integer> usedRulesIds = new ArrayList<Integer>();
public ContactMapChangedSite(AbstractSite site) {
this.site = site;
setInternalState(site);
setLinkState(site);
}
public final boolean hasLinkState() {
return hasLinkState;
}
public final boolean hasInternalState() {
return hasInternalState;
}
public final void setLinkState(AbstractSite site) {
if (this.hasLinkState)
return;
if (!NameDictionary.isDefaultSiteName(site.getLinkState().getConnectedSiteName()))
this.hasLinkState = true;
else
this.hasLinkState = false;
}
public final void setInternalState(AbstractSite site) {
if(this.hasInternalState==true)
return;
if (!site.getInternalState().hasDefaultName())
this.hasInternalState = true;
else
this.hasInternalState = false;
}
public final List<Integer> getUsedRuleIDs() {
return usedRulesIds;
}
public final AbstractSite getSite() {
return site;
}
public final void addRules(int ruleId) {
if (!usedRulesIds.contains(ruleId))
usedRulesIds.add(ruleId);
}
}