package org.molgenis.mutation.web;
import java.io.IOException;
import java.text.ParseException;
import javax.servlet.http.HttpServletRequest;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.framework.server.MolgenisRequest;
import org.molgenis.framework.server.MolgenisResponse;
public class MutationFrontController extends app.servlet.FrontController {
private static final long serialVersionUID = 3141439968743510237L;
@Override
public void handleRequest(MolgenisRequest request, MolgenisResponse response)
throws ParseException, DatabaseException, IOException {
HttpServletRequest req = request.getRequest();
String contextPath = req.getContextPath();
String path = req.getRequestURI().substring(contextPath.length() + 1);
if (path.equals("")) {
path = "/";
}
if (!path.startsWith("/")) {
path = "/" + path;
}
for (String p : services.keySet()) {
if (path.startsWith(p)) {
long startTime = System.currentTimeMillis();
System.out.println("> new request to '" + path + "' from "
+ request.getRequest().getRemoteHost() + " handled by "
+ services.get(p).getClass().getSimpleName()
+ " mapped on path " + p);
System.out.println("request content: " + request.toString());
try {
this.createDatabase(request);
this.createLogin(request);
System.out.println("database status: "
+ (request.getDatabase().getLogin()
.isAuthenticated() ? "authenticated as "
+ request.getDatabase().getLogin()
.getUserName()
: "not authenticated"));
request.setRequestPath(path); // the path that was requested
request.setServicePath(p); // the path mapping used to
// handle the request
services.get(p).handleRequest(request, response);
} catch (Exception e) {
System.out.println(">>> Ooops... Something went wrong.");
e.printStackTrace();
} finally {
if (request.getDatabase() != null && request.getDatabase().getEntityManager().isOpen()) {
request.getDatabase().close();
}
}
System.out.println("< request was handled in "
+ (System.currentTimeMillis() - startTime) + "ms.");
return;
}
}
}
}