@RequestMapping(method = RequestMethod.POST) public ModelAndView add(DatasetForm datasetEntryForm, Errors errors, HttpSession session) { ModelAndView mav = new ModelAndView(); validatorDataEntry.validate(datasetEntryForm, errors); if (errors.hasErrors()) { logger.error("Errores en la validacion del formulario"); mav.addObject("privateKey", properties.getReCaptchaPrivateKey()); mav.addObject("publicKey", properties.getReCaptchaPublicKey()); mav.setViewName("dataset/add"); return mav; } PreDataset aDataset = datasetEntryForm.build(); // the resource's length will be calculated later on a separate thread. aDataset.setSize(0); ArgendataUser user = (ArgendataUser) session.getAttribute("user"); if (!aDataset.getDistribution().equals("Download")) { aDataset.setFormat(""); aDataset.setSize(0); } if (!user.isAdmin()) { try { aDataset.setSize(getResourceLength(aDataset)); datasetService.store(aDataset); } catch (Exception e) { logger.error("No se pudo agregar el dataset al store relacional"); logger.error(e.getMessage(), e); mav.setViewName("redirect:../static/error"); return mav; } mav.setViewName("redirect:../user/home?state=1"); } else { Dataset readyDataset = aDataset.toNoRelationalDataset(); try { datasetService.store(readyDataset); } catch (Exception e) { logger.error("No se pudo agregar el dataset al store semántico"); logger.error(e.getMessage(), e); mav.setViewName("redirect:../static/error"); return mav; } mav.setViewName("redirect:../search/searchDataHome"); } asyncResourceLength(aDataset, user.isAdmin()); return mav; }
@RequestMapping(method = RequestMethod.GET) public ModelAndView view(@RequestParam String qName, HttpSession session) { ModelAndView mav = new ModelAndView(); mav.addObject("mainURL", properties.getMainURL()); Dataset retrievedDataset = this.datasetService.getApprovedDatasetByQName(qName); if (retrievedDataset == null) { logger.info("El dataset no existe"); mav.setViewName("redirect:/bin/dataset/error"); return mav; } String format = null; if (retrievedDataset.getDistribution() != null && retrievedDataset.getDistribution().getFormat() != null) { format = retrievedDataset.getDistribution().getFormat().toLowerCase(); } DatasetViewDTO dview; /* * Microsoft Office: doc, docx, xls, xlsx, ppt, pptx, pps; OpenDocument: * odt, ods, odp; OpenOffice:sxw, sxc, sxi; Other Formats: wpd, pdf, * rtf, txt, html, csv, tsv */ if (format != null && (format.endsWith("doc") || format.endsWith("docx") || format.endsWith("xls") || format.endsWith("xlsx") || format.endsWith("ppt") || format.endsWith("pptx") || format.endsWith("pps") || format.endsWith("odt") || format.endsWith("ods") || format.endsWith("odp") || format.endsWith("swx") || format.endsWith("sxi") || format.endsWith("wpd") || format.endsWith("pdf") || format.endsWith("rtf") || format.endsWith("txt") || format.endsWith("csv") || format.endsWith("tsv"))) { dview = new DatasetViewDTO(retrievedDataset, true); } else { dview = new DatasetViewDTO(retrievedDataset, false); } mav.addObject("dto", dview); String theDate = ""; /* Se pasa la fecha a un formato entendible por el usuario final */ String correctDate = dview.getDataset().getModified(); Scanner scanner = new Scanner(correctDate); scanner.useDelimiter("T"); if (scanner.hasNext()) { theDate = scanner.next(); Scanner scannerDate = new Scanner(theDate); scannerDate.useDelimiter("-"); String year = scannerDate.next(); String month = scannerDate.next(); String day = scannerDate.next(); theDate = year + "-" + month + "-" + day; } else { logger.error("No se pudo obtener la fecha de la última modificación."); } mav.addObject("datasetDate", theDate); ArgendataUser user = (ArgendataUser) session.getAttribute("user"); if (user != null && user.isAdmin()) { mav.addObject("admin", true); } else { mav.addObject("admin", false); } if (user != null) { mav.addObject("logged", true); } else { mav.addObject("logged", false); } return mav; }