Search in sources :

Example 21 with Condition

use of org.eclipse.smarthome.automation.Condition in project smarthome by eclipse.

the class ScriptedAutomationManager method addRule.

public Rule addRule(Rule element) {
    Rule rule = element.getUID() == null ? new Rule(generateUID()) : new Rule(element.getUID());
    String name = element.getName();
    if (name == null || name.isEmpty()) {
        name = element.getClass().getSimpleName();
        if (name.contains("$")) {
            name = name.substring(0, name.indexOf('$'));
        }
    }
    rule.setName(name);
    rule.setDescription(element.getDescription());
    rule.setTags(element.getTags());
    // used for numbering the modules of the rule
    int moduleIndex = 1;
    try {
        ArrayList<Condition> conditions = new ArrayList<>();
        for (Condition cond : element.getConditions()) {
            Condition toAdd = cond;
            if (cond.getId() == null || cond.getId().isEmpty()) {
                toAdd = new Condition(Integer.toString(moduleIndex++), cond.getTypeUID(), cond.getConfiguration(), cond.getInputs());
            }
            conditions.add(toAdd);
        }
        rule.setConditions(conditions);
    } catch (Exception ex) {
    // conditions are optional
    }
    try {
        ArrayList<Trigger> triggers = new ArrayList<>();
        for (Trigger trigger : element.getTriggers()) {
            Trigger toAdd = trigger;
            if (trigger.getId() == null || trigger.getId().isEmpty()) {
                toAdd = new Trigger(Integer.toString(moduleIndex++), trigger.getTypeUID(), trigger.getConfiguration());
            }
            triggers.add(toAdd);
        }
        rule.setTriggers(triggers);
    } catch (Exception ex) {
    // triggers are optional
    }
    ArrayList<Action> actions = new ArrayList<>();
    actions.addAll(element.getActions());
    if (element instanceof SimpleRuleActionHandler) {
        String privId = addPrivateActionHandler(new SimpleRuleActionHandlerDelegate((SimpleRuleActionHandler) element));
        Action scriptedAction = new Action(Integer.toString(moduleIndex++), "jsr223.ScriptedAction", new Configuration(), null);
        scriptedAction.getConfiguration().put("privId", privId);
        actions.add(scriptedAction);
    }
    rule.setActions(actions);
    ruleRegistryDelegate.add(rule);
    return rule;
}
Also used : Condition(org.eclipse.smarthome.automation.Condition) Action(org.eclipse.smarthome.automation.Action) Configuration(org.eclipse.smarthome.config.core.Configuration) SimpleRuleActionHandlerDelegate(org.eclipse.smarthome.automation.module.script.rulesupport.shared.simple.SimpleRuleActionHandlerDelegate) ArrayList(java.util.ArrayList) Trigger(org.eclipse.smarthome.automation.Trigger) Rule(org.eclipse.smarthome.automation.Rule) SimpleRuleActionHandler(org.eclipse.smarthome.automation.module.script.rulesupport.shared.simple.SimpleRuleActionHandler)

Aggregations

Condition (org.eclipse.smarthome.automation.Condition)21 Action (org.eclipse.smarthome.automation.Action)10 Configuration (org.eclipse.smarthome.config.core.Configuration)10 Trigger (org.eclipse.smarthome.automation.Trigger)9 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)4 Rule (org.eclipse.smarthome.automation.Rule)4 Test (org.junit.Test)4 HashSet (java.util.HashSet)3 ConfigDescriptionParameter (org.eclipse.smarthome.config.core.ConfigDescriptionParameter)3 Set (java.util.Set)2 Module (org.eclipse.smarthome.automation.Module)2 RuleStatus (org.eclipse.smarthome.automation.RuleStatus)2 ConditionHandler (org.eclipse.smarthome.automation.handler.ConditionHandler)2 CompareConditionHandler (org.eclipse.smarthome.automation.module.core.handler.CompareConditionHandler)2 SimpleEntry (java.util.AbstractMap.SimpleEntry)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 LinkedList (java.util.LinkedList)1