Merge pull request #291 from vivo-project/feature/VIVO-3696

[3696] Timestamped filename for named graph output
This commit is contained in:
Dragan Ivanovic 2022-05-19 16:28:29 +02:00 committed by GitHub
commit 0d704f3eb8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -17,6 +17,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -34,6 +35,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import edu.cornell.mannlib.vitro.webapp.utils.JSPPageHandler; import edu.cornell.mannlib.vitro.webapp.utils.JSPPageHandler;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -290,13 +292,16 @@ public class JenaIngestController extends BaseEditController {
private void processOutputModelRequest(VitroRequest vreq, private void processOutputModelRequest(VitroRequest vreq,
HttpServletResponse response) { HttpServletResponse response) {
String modelNameStr = vreq.getParameter("modelName"); String modelNameStr = vreq.getParameter("modelName");
DateTimeFormatter timeStampPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss");
String fileName = FilenameUtils.getName(modelNameStr) + "-" + timeStampPattern.format(java.time.LocalDateTime.now());
Model model = getModel(modelNameStr,vreq); Model model = getModel(modelNameStr,vreq);
JenaOutputUtils.setNameSpacePrefixes(model,vreq.getWebappDaoFactory()); JenaOutputUtils.setNameSpacePrefixes(model,vreq.getWebappDaoFactory());
model.enterCriticalSection(Lock.READ); model.enterCriticalSection(Lock.READ);
try { try {
OutputStream out = response.getOutputStream(); OutputStream out = response.getOutputStream();
response.setContentType("application/x-turtle"); response.setContentType("application/x-turtle");
//out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes()); response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".ttl");
model.write(out, "TTL"); model.write(out, "TTL");
out.flush(); out.flush();
out.close(); out.close();