package io.lumify.sql.model.notification;
import io.lumify.core.model.notification.Notification;
import io.lumify.core.model.notification.SystemNotification;
import io.lumify.core.model.notification.SystemNotificationRepository;
import io.lumify.core.model.notification.SystemNotificationSeverity;
import org.json.JSONObject;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "system_notification")
public class SqlSystemNotification implements SystemNotification {
private String id;
private String severity;
private String title;
private String message;
private Date startDate;
private Date endDate;
private String actionEvent;
private String actionPayload;
public void setId(String id) {
this.id = id;
}
@Override
@Id
@Column(name = "id", unique = true)
public String getId() {
return id;
}
@Override
public void setSeverity(SystemNotificationSeverity severity) {
this.severity = severity.toString();
}
@Override
@Column(name = "severity")
public SystemNotificationSeverity getSeverity() {
return SystemNotificationSeverity.valueOf(severity);
}
@Override
public void setTitle(String title) {
this.title = title;
}
@Override
@Column(name = "title", length = 1024)
public String getTitle() {
return title;
}
@Override
public void setMessage(String message) {
this.message = message;
}
@Override
@Column(name = "message", length = 4000)
public String getMessage() {
return message;
}
@Override
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@Override
@Column(name = "start_date")
public Date getStartDate() {
return startDate;
}
@Override
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
@Override
@Column(name = "end_date")
public Date getEndDate() {
return endDate;
}
@Column(name = "action_payload", length = 4000)
private String getActionPayloadString() {
return actionPayload;
}
public void setActionPayloadString(String actionPayload) {
this.actionPayload = actionPayload;
}
@Override
public void setActionEvent(String actionEvent) {
this.actionEvent = actionEvent;
}
@Override
@Column(name = "action_event")
public String getActionEvent() {
return this.actionEvent;
}
@Override
public void setActionPayload(JSONObject jsonData) {
this.setActionPayloadString(jsonData.toString());
}
@Override
public void setExternalUrl(String externalUrl) {
this.setActionEvent(Notification.ACTION_EVENT_EXTERNAL_URL);
JSONObject payload = new JSONObject();
payload.put("url", externalUrl);
this.setActionPayload(payload);
}
@Transient
@Override
public JSONObject getActionPayload() {
String payload = getActionPayloadString();
if (payload != null) {
return new JSONObject(payload);
}
return null;
}
@Transient
@Override
public JSONObject toJSONObject() {
return SystemNotificationRepository.toJSONObject(this);
}
@Transient
@Override
public boolean isActive() {
return SystemNotificationRepository.isActive(this);
}
}