package org.jgrasstools.geopaparazzi.simpleserver; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.nio.file.Files; import java.util.Map; import javax.servlet.ServletInputStream; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.jgrasstools.gears.io.geopaparazzi.GeopaparazziUtilities; public class GeopaparazziServerUtilities { public static String handleProjectUpload( File gpapProjectsFolder, HttpServletResponse response, HttpServletRequest request ) throws Exception { String projectFileName = ""; String msg = ""; PrintWriter outWriter = response.getWriter(); Map<String, String[]> parms = request.getParameterMap(); String[] nameParams = parms.get("name"); if (nameParams != null && nameParams.length == 1) { projectFileName = nameParams[0]; File file = new File(gpapProjectsFolder, projectFileName); if (file.exists()) { msg = "File already exists on the server: " + projectFileName; outWriter.write(msg); } else { ServletInputStream inputStream = request.getInputStream(); Files.copy(inputStream, file.toPath()); msg = "Uploaded file: " + projectFileName; // ...in case of multiparts // StringBuilder sb = new StringBuilder(); // Collection<Part> parts = request.getParts(); // for( Part part : parts ) { // long fileSize = part.getSize(); // String fileName = part.getSubmittedFileName(); // if (fileSize == 0 && (fileName == null || fileName.isEmpty())) { // continue; // Ignore part, if not a file. // } // Files.copy(part.getInputStream(), file.toPath()); // sb.append(",").append(file.getName()); // } // if (sb.length() > 0) { // msg = "Uploaded files: " + sb.substring(1); // } } } outWriter.write(msg); return projectFileName; } public static String handleProjectDownload( File gpapProjectsFolder, HttpServletRequest request, HttpServletResponse response ) throws Exception { String projectFileName = ""; FileInputStream inputStream = null; ServletOutputStream outputStream = null; try { Map<String, String[]> parms = request.getParameterMap(); String[] idParams = parms.get("id"); if (idParams != null && idParams.length == 1) { projectFileName = idParams[0]; inputStream = new FileInputStream(new File(gpapProjectsFolder, projectFileName)); String mimeType = "application/octet-stream"; response.setContentType(mimeType); response.setHeader("Content-disposition", "attachment; filename=" + projectFileName); outputStream = response.getOutputStream(); IOUtils.copy(inputStream, outputStream); } } finally { IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); } return projectFileName; } public static void handleProjectList( HttpServletResponse response, File gpapProjectsFolder ) throws IOException { response.setContentType("text/json"); PrintWriter out = response.getWriter(); String projectsList = GeopaparazziUtilities.loadProjectsList(gpapProjectsFolder); out.write(projectsList); } }