package hirondelle.fish.help;
import java.util.logging.Logger;
import hirondelle.web4j.model.AppException;
import hirondelle.web4j.request.RequestParameter;
import hirondelle.web4j.request.RequestParser;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.action.Action;
import hirondelle.web4j.util.Util;
public final class ShowHelpAction implements Action {
public ShowHelpAction(RequestParser aRequestParser){
fRequestParser = aRequestParser;
}
public static final RequestParameter ORIGINAL_URI = RequestParameter.withLengthCheck("OriginalURI");
public ResponsePage execute() throws AppException {
toggleDisplayOfHelp();
return new ResponsePage(getRedirect());
}
private final RequestParser fRequestParser;
private static final Logger fLogger = Util.getLogger(ShowHelpAction.class);
private static final boolean DO_NOT_CREATE = false;
private void toggleDisplayOfHelp() {
fLogger.fine("Toggling display of help.");
Boolean oldSetting = (Boolean)fRequestParser.getRequest().getSession(DO_NOT_CREATE).getAttribute(ShowHelpTag.KEY);
Boolean newSetting = null;
if ( oldSetting == null || oldSetting == Boolean.FALSE ){
newSetting = Boolean.TRUE;
}
else {
newSetting = Boolean.FALSE;
}
fRequestParser.getRequest().getSession(DO_NOT_CREATE).setAttribute(ShowHelpTag.KEY, newSetting);
}
private String getRedirect() {
fLogger.fine("Getting original URI.");
String result = fRequestParser.toSafeText(ORIGINAL_URI).getRawString();
result = Util.replace(result, "&", "&");
fLogger.fine("Redirecting to : " + result);
return result;
}
}