49 lines
1.1 KiB
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);
|
|
}
|
|
|
|
}
|