package edu.isi.karma.webserver;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.UriBuilder;
import org.apache.commons.io.FilenameUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import edu.isi.karma.webserver.ServletContextParameterMap.ContextParameter;
public class R2RMLMappingServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = -979319404654953710L;
private String serverAddress = "";
private final String R2RML_PUBLISH_DIR = ContextParametersRegistry.getInstance().getDefault().getParameterValue(ContextParameter.WEBAPP_PATH) + "/publish/R2RML";
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
serverAddress = request.getRequestURL().toString();
if (request.getPathInfo() == null) {
File directory = new File(R2RML_PUBLISH_DIR);
File[] contents = directory.listFiles();
JSONArray array = new JSONArray();
for (int i = 0; i < contents.length; i++) {
if (FilenameUtils.getExtension(contents[i].getName()).compareTo("ttl") == 0) {
JSONObject obj = new JSONObject();
UriBuilder builder = UriBuilder.fromPath(contents[i].getName());
obj.put("url", serverAddress + "/" + builder.build().toString());
array.put(obj);
}
}
response.setContentType("application/json");
response.getWriter().println(array);
}
else {
String filename = request.getPathInfo();
File file = new File(R2RML_PUBLISH_DIR + filename);
response.setContentType("text/plain");
if (file.exists() && !file.isDirectory()) {
Scanner in = new Scanner(file);
while (in.hasNextLine()) {
response.getWriter().println(in.nextLine());
}
in.close();
}
else {
response.setStatus(404);
}
}
}
}