package com.psddev.cms.db;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.psddev.dari.db.Record;
import com.psddev.dari.util.HtmlWriter;
@Text.DisplayName("Raw HTML")
@ToolUi.Referenceable
public class Text extends Content implements Renderer {
@Indexed(unique = true)
@Required
private String name;
@DisplayName("HTML")
@ToolUi.CodeType("text/html")
private String text;
@ToolUi.Tab("Advanced")
private Integer statusCode;
@ToolUi.Tab("Advanced")
private List<Header> headers;
/** Returns the name. */
public String getName() {
return name;
}
/** Sets the name. */
public void setName(String name) {
this.name = name;
}
/** Returns the text. */
public String getText() {
return text;
}
/** Sets the text. */
public void setText(String text) {
this.text = text;
}
public Integer getStatusCode() {
return statusCode;
}
public void setStatusCode(Integer statusCode) {
this.statusCode = statusCode;
}
public List<Header> getHeaders() {
if (headers == null) {
headers = new ArrayList<Header>();
}
return headers;
}
public void setHeaders(List<Header> headers) {
this.headers = headers;
}
@Override
public void renderObject(
HttpServletRequest httpRequest,
HttpServletResponse httpResponse,
HtmlWriter writer)
throws IOException {
Integer statusCode = getStatusCode();
if (statusCode != null) {
httpResponse.setStatus(statusCode);
}
for (Header header : getHeaders()) {
httpResponse.addHeader(header.getName(), header.getValue());
}
writer.writeRaw(getText());
}
@Embedded
public static class Header extends Record {
@Required
private String name;
@Required
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}