Homeautomation/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntry.java

113 lines
2.5 KiB
Java

package de.ph87.homeautomation.schedule.entry;
import com.luckycatlabs.sunrisesunset.Zenith;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.Map;
@Getter
@Setter
@Entity
public class ScheduleEntry {
@Id
@GeneratedValue
@Setter(AccessLevel.NONE)
private Long id;
private boolean enabled = true;
private boolean monday = true;
private boolean tuesday = true;
private boolean wednesday = true;
private boolean thursday = true;
private boolean friday = true;
private boolean saturday = true;
private boolean sunday = true;
@Column(nullable = false)
private ScheduleEntryType type = null;
private double zenith = Zenith.CIVIL.degrees().doubleValue();
private int hour;
private int minute;
private int second;
private ZonedDateTime nextDateTime;
@ElementCollection(fetch = FetchType.EAGER)
private Map<String, String> properties = new HashMap<>();
public void setWorkday(final boolean enabled) {
monday = enabled;
tuesday = enabled;
wednesday = enabled;
thursday = enabled;
friday = enabled;
}
public void setWeekend(final boolean enabled) {
saturday = enabled;
sunday = enabled;
}
public void setEveryday(final boolean enabled) {
setWorkday(enabled);
setWeekend(enabled);
}
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append(getClass().getSimpleName());
builder.append("(id=");
builder.append(id);
builder.append(", enabled=");
builder.append(enabled);
builder.append(", type=");
builder.append(type);
builder.append(", weekdays=");
builder.append(monday ? 1 : 0);
builder.append(tuesday ? 1 : 0);
builder.append(wednesday ? 1 : 0);
builder.append(thursday ? 1 : 0);
builder.append(friday ? 1 : 0);
builder.append(saturday ? 1 : 0);
builder.append(sunday ? 1 : 0);
if (type != null) {
switch (type) {
case TIME:
builder.append(", hour=");
builder.append(hour);
builder.append(", minute=");
builder.append(minute);
builder.append(", second=");
builder.append(second);
break;
case SUNRISE:
case SUNSET:
builder.append(", zenith=");
builder.append(zenith);
break;
}
}
builder.append(")");
return builder.toString();
}
}