113 lines
2.5 KiB
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();
|
|
}
|
|
|
|
}
|