package com.plectix.simulator.parser.abstractmodel; import java.util.ArrayList; import java.util.Collection; import java.util.List; import com.plectix.simulator.parser.abstractmodel.observables.ModelObservables; import com.plectix.simulator.simulator.api.steps.experiments.RulePattern; import com.plectix.simulator.staticanalysis.Rule; import com.plectix.simulator.util.IdGenerator; public final class KappaModel { private List<ModelPerturbation> perturbations = new ArrayList<ModelPerturbation>(); private ModelObservables observables = new ModelObservables(); private ModelSolution solution = new ModelSolution(); private ModelStories stories = null; private Collection<ModelRule> rules = new ArrayList<ModelRule>(); private final IdGenerator agentIdGenerator = new IdGenerator(); private final IdGenerator ruleIdGenerator = new IdGenerator(); public final IdGenerator getAgentIdGenerator() { return agentIdGenerator; } public final IdGenerator getRuleIdGenerator() { return ruleIdGenerator; } public final ModelObservables getObservables() { return observables; } public final Collection<ModelRule> getRules() { return rules; } public final ModelSolution getSolution() { return solution; } public final void setSolution(ModelSolution solution) { this.solution = solution; } public final void setStories(ModelStories stories) { this.stories = stories; } public final void setRules(Collection<ModelRule> rules) { this.rules = rules; } public final void addRule(ModelRule rule) { this.rules.add(rule); } public final ModelStories getStories() { return stories; } public final void setObservables(ModelObservables observables) { this.observables = observables; } public final void setPerturbations(List<ModelPerturbation> perturbations) { this.perturbations = perturbations; } public final List<ModelPerturbation> getPerturbations() { return perturbations; } @Override public final String toString() { StringBuffer sb = new StringBuffer(); for (ModelRule rule : rules) { sb.append(rule + "\n"); } sb.append("\n" + solution + "\n"); sb.append(observables + "\n"); sb.append(stories + "\n"); for (ModelPerturbation perturbation : perturbations) { sb.append(perturbation + "\n"); } return sb.toString(); } public ModelRule getRuleByPattern(RulePattern pattern) { for (ModelRule modelRule : rules) { if (pattern.matches(modelRule)) { return modelRule; } } return null; } public ModelRule getRuleByName(String ruleName) { for (ModelRule modelRule : rules) { if (ruleName.equals(modelRule.getName())) { return modelRule; } } return null; } }