package nl.topicus.onderwijs.dashboard.datatypes;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import nl.topicus.onderwijs.dashboard.keys.Key;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class Alert implements Serializable {
private static final long serialVersionUID = 1L;
private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat(
"HH:mm");
private DotColor color;
private String time;
private String message;
private Key project;
private boolean overlayVisible = true;
public Alert() {
}
public Alert(Alert oldAlert, DotColor color, Key project, String message) {
this.color = color;
this.project = project;
this.message = message;
if (oldAlert != null && project.equals(oldAlert.getProject())
&& oldAlert.getMessage().equals(message)) {
this.time = oldAlert.getTime();
} else {
this.time = TIME_FORMAT.format(new Date());
}
}
public DotColor getColor() {
return color;
}
public void setColor(DotColor color) {
this.color = color;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Key getProject() {
return project;
}
public void setProject(Key project) {
this.project = project;
}
public String getProjectName() {
return getProject().getName();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public boolean isOverlayVisible() {
return overlayVisible;
}
public void setOverlayVisible(boolean overlayVisible) {
this.overlayVisible = overlayVisible;
}
@Override
public String toString() {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(this);
} catch (JsonGenerationException e) {
throw new RuntimeException(e);
} catch (JsonMappingException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public String getKey() {
StringBuilder ret = new StringBuilder();
ret.append(getColor().ordinal());
ret.append('-');
if (getTime().length() < 5) {
ret.append('0');
}
ret.append(getTime());
ret.append('-');
ret.append(getProject().getCode());
ret.append('-');
ret.append(getMessage().hashCode());
return ret.toString();
}
}