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); } }