package hep.aida.ref.plotter.style.registry;

public class JELRule implements IStyleRule {
    
    private String description;
    private String type;
    private JELRuleCompiledExpression compiledExpression;
    
    /** Creates a new instance of JELRule */
    public JELRule() {
        this("");
    }
    public JELRule(String description) {
        this(description, null);
    }
    public JELRule(String description, String type) {
        this.description = description;
        this.type = type;
        if (description != null) recompile();
    }
 
    // Service methods
    
    void recompile() {
        if (description == null || description.trim().equals("")) compiledExpression = null;
        else compiledExpression = new JELRuleCompiledExpression(description);
    }
    
    
    public void setType(String d) { type = d; }
    public String getType() { return type; }
    
    
    // IStyleRule methods
    
    public void setDescription(String d) { 
        String tmp = description;
        description = d;
        try {
            recompile();
        } catch (RuntimeException e1) {
            description = tmp;
            throw e1;
        } catch (Exception e2) {
            description = tmp;
            throw new RuntimeException("Can not set Description for JELRule: \n\t"+d, e2);
        }
    }
    
    public String getDescription() { return description; }
    
    // Evaluates the Rule    
    public boolean ruleApplies(IPlotterState state) {
        if (compiledExpression == null) return true;
        else return compiledExpression.evaluate(state);
    }
    
}

 

Ads help maintain this website.