package com.plectix.simulator.simulator.api.steps; import java.util.List; import com.plectix.simulator.simulator.KappaSystem; import com.plectix.simulator.simulator.api.OperationType; import com.plectix.simulator.staticanalysis.Rule; import com.plectix.simulator.staticanalysis.StaticAnalysisException; import com.plectix.simulator.staticanalysis.rulecompression.RuleCompressionType; public class RuleCompressionOperation extends AbstractOperation<List<Rule>> { private final KappaSystem kappaSystem; private final RuleCompressionType type; public RuleCompressionOperation(KappaSystem kappaSystem, RuleCompressionType type) { super(kappaSystem.getSimulationData(), OperationType.RULE_COMPRESSION); this.kappaSystem = kappaSystem; this.type = type; } protected List<Rule> performDry() throws StaticAnalysisException { List<Rule> compressedRules = kappaSystem.compressRules(type, kappaSystem.getRules()); return compressedRules; } @Override protected boolean noNeedToPerform() { return kappaSystem.ruleCompressionWasPerformed(type); } @Override protected List<Rule> retrievePreparedResult() { return kappaSystem.getRuleCompressionBuilder().getResults(type).getCompressedRules(); } }