/** * 파일을 업로드한다. * * @return REST Response JAXB Object */ @RequestMapping( value = "/upload", method = RequestMethod.POST, consumes = {"multipart/form-data"}) @ResponseStatus(HttpStatus.OK) public ResponseEntity<String> upload(HttpServletRequest req) throws IOException { Response response = new Response(); if (!(req instanceof DefaultMultipartHttpServletRequest)) { response.setSuccess(false); response.getError().setCause("Invalid Request."); response.getError().setMessage("Invalid Request."); String json = new ObjectMapper().writeValueAsString(response); return new ResponseEntity(json, HttpStatus.BAD_REQUEST); } try { DefaultMultipartHttpServletRequest request = (DefaultMultipartHttpServletRequest) req; logger.debug( "Uploaded File >> Path : {}, Filename : {}, Size: {} bytes", new Object[] { request.getParameter("path"), request.getFile("file").getOriginalFilename(), request.getFile("file").getSize() }); String clusterName = request.getParameter("clusterName"); Map params = new HashMap(); EngineService engineService = this.getEngineService(clusterName); VisualService service = engineService.getVisualService(); Map resultMap = service.saveFile(request.getFile("file"), request.getParameter("options")); response.getMap().putAll(resultMap); response.setSuccess(true); String json = new ObjectMapper().writeValueAsString(response); HttpStatus statusCode = HttpStatus.OK; return new ResponseEntity(json, statusCode); } catch (Exception ex) { response.setSuccess(false); response.getError().setMessage(ex.getMessage()); if (ex.getCause() != null) response.getError().setCause(ex.getCause().getMessage()); response.getError().setException(ExceptionUtils.getFullStackTrace(ex)); String json = new ObjectMapper().writeValueAsString(response); HttpStatus statusCode = HttpStatus.INTERNAL_SERVER_ERROR; logger.debug(ExceptionUtils.getFullStackTrace(ex)); return new ResponseEntity(json, statusCode); } }
@RequestMapping(value = "/listVariablesHdfs", method = RequestMethod.POST) @ResponseStatus(HttpStatus.OK) public Response listVariablesHdfs(@RequestBody Map params) { Response response = new Response(); try { String clusterName = params.get("clusterName").toString(); EngineService engineService = this.getEngineService(clusterName); VisualService service = engineService.getVisualService(); Map resultMap = service.listVariablesHdfs(params); if ((boolean) resultMap.get("success")) { response.setSuccess(true); response.getMap().putAll(resultMap); } else { response.setSuccess(false); } } catch (Exception ex) { response.setSuccess(false); response.getError().setMessage(ex.getMessage()); if (ex.getCause() != null) response.getError().setCause(ex.getCause().getMessage()); response.getError().setException(ExceptionUtils.getFullStackTrace(ex)); logger.info(ex.toString()); } return response; }
@RequestMapping(value = "/task/log", method = RequestMethod.GET) @ResponseStatus(HttpStatus.OK) public Response getTaskLog( @RequestParam(defaultValue = "") String clusterName, @RequestParam(defaultValue = "") Long id) { EngineService engineService = getEngineService(clusterName); Response response = new Response(); try { TaskHistory taskHistories = engineService.getTaskHistoryRemoteService().select(id); String filename = null; String task = taskHistories.getLogDirectory() + "/task.log"; if (new File(task).exists() && new File(task).length() == 0) { String err = taskHistories.getLogDirectory() + "/err.log"; if (new File(err).exists()) { filename = err; } } else { filename = task; } ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileUtils.copyFile(new File(filename), baos); response.getMap().put("text", new String(baos.toByteArray())); response.setSuccess(true); } catch (Exception ex) { // FIXME 여기 WholeBodyException을 수정해야하지 않을까?? response.setSuccess(false); response.getError().setMessage("Unable to load a log file."); response.getError().setException(ExceptionUtils.getFullStackTrace(ex)); if (ex.getCause() != null) response.getError().setCause(ex.getCause().getMessage()); } return response; }