Home4/src/main/java/de/ph87/home/automation/Automation.java

49 lines
1.1 KiB
Java

package de.ph87.home.automation;
import de.ph87.home.expression.AbstractExpression;
import de.ph87.home.expression.Runtime;
import jakarta.annotation.Nullable;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.ToString;
import java.util.UUID;
@Entity
@Getter
@ToString
@NoArgsConstructor
public class Automation {
@Id
@NonNull
private String uuid = UUID.randomUUID().toString();
@NonNull
@Column(nullable = false)
private String name;
@Column(nullable = false)
private boolean enabled = false;
@Nullable
@ManyToOne
private AbstractExpression condition;
public Automation(@NonNull final String name, final boolean enabled, @NonNull final AbstractExpression condition) {
this.name = name;
this.enabled = enabled;
this.condition = condition;
}
public boolean evaluateCondition(@NonNull final Runtime runtime) {
return AbstractExpression.mapOrElseNotNull(condition, c -> c.evaluate(runtime), AbstractExpression::convertToBoolean, false);
}
}