package hirondelle.fish.exercise.binary;
import hirondelle.web4j.action.ActionImpl;
import hirondelle.web4j.model.AppException;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.request.RequestParser;
import java.io.IOException;
import java.util.logging.*;
import hirondelle.web4j.util.Util;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public final class ServeBinaryAction extends ActionImpl {
public ServeBinaryAction(RequestParser aRequestParser) {
super(RTF_REPORT, aRequestParser);
}
@Override public ResponsePage execute() throws AppException {
fLogger.fine("Serving response as an .rtf file.");
HttpServletResponse response = getRequestParser().getResponse();
try {
PrintWriter out = response.getWriter();
try {
response.setContentType("application/rtf");
out.println(
"{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 Times New Roman;}}" +
"{\\pard\\fs32\\b NOTE\\par}" +
"{\\pard\\fs26 Bangalore is rather {\\i hot and sticky} " +
"at this time of year, don't you think? " +
"\\line But some people {\\b rather like it} that way..." +
"\\par}" +
"}"
);
}
finally {
out.close();
}
}
catch (IOException ex) {
throw new AppException("Cannot generate binary output.", ex);
}
return getResponsePage();
}
private static final ResponsePage RTF_REPORT = ResponsePage.withBinaryData();
private static final Logger fLogger = Util.getLogger(ServeBinaryAction.class);
}