package marubinotto.piggydb.ui;
import static java.lang.Long.parseLong;
import static org.apache.commons.lang.StringUtils.isNotBlank;
import static org.apache.commons.lang.StringUtils.removeStart;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class DocumentViewUrlFilter implements Filter {
private static Log logger = LogFactory.getLog(DocumentViewUrlFilter.class);
public void init(FilterConfig config) throws ServletException {
}
public static final String PATH_PREFIX = "/d/";
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// Get the request path
HttpServletRequest httpRequest = (HttpServletRequest)request;
String path = removeStart(
httpRequest.getRequestURI(),
httpRequest.getContextPath() + PATH_PREFIX);
logger.info("path: " + path);
String docViewPath = "/document-view.htm";
try {
Long fragmentId = isNotBlank(path) ? parseLong(path) : 0L;
if (fragmentId > 0) docViewPath += "?id=" + fragmentId;
}
catch (NumberFormatException e) {
docViewPath += "?name=" + path;
}
httpRequest.getRequestDispatcher(docViewPath).forward(request, response);
}
public void destroy() {
}
}