@Get @Path("/reports/{errorEntry.id}/edit") @LoggedIn public void editDetails(ErrorEntry errorEntry) { if (errorEntry == null) { result.redirectTo(getClass()).list(); return; } ErrorEntry errorEntryFromDB = errorEntryDAO.retrieve(new Long(errorEntry.getId())); LOG.debug("Details for: " + errorEntryFromDB); if (errorEntryFromDB == null) { validator.add( new ValidationMessage(ExceptionMessages.PAGE_NOT_FOUND, ExceptionMessages.ERROR)); validator.onErrorUse(Results.logic()).redirectTo(ErrorReportController.class).list(); } else if (!loggedUser.isLogged() || !loggedUser.getUser().getRole().getCanEditErrorReport()) { validator.add( new ValidationMessage(ExceptionMessages.USER_UNAUTHORIZED, ExceptionMessages.ERROR)); validator .onErrorUse(Results.logic()) .redirectTo(ErrorReportController.class) .details(errorEntryFromDB); } else { List<ProcessResult> procRes = cogrooFacade.processText(errorEntryFromDB.getText()); boolean hasError = false; for (ProcessResult processResult : procRes) { if (processResult.getMistakes().size() > 0) { hasError = true; break; } } result .include("errorEntry", errorEntryFromDB) .include("hasError", hasError) .include("processResultList", procRes) .include( "singleGrammarErrorList", cogrooFacade.asSingleGrammarErrorList(errorEntryFromDB.getText(), procRes)) .include("omissionCategoriesList", this.errorEntryLogic.getErrorCategoriesForUser()); } }
@Post @Path("/reports/newtext") public void addReport(String text) { text = sanitizer.sanitize(text, false, true); try { if (text != null && text.length() >= 0) { if (text.length() > 255) { text = text.substring(0, 255); } if (!loggedUser.isLogged()) { // if not logged we save the text. if (LOG.isDebugEnabled()) { LOG.debug("Saving error report text before login: "******"Error text: " + text); } List<ProcessResult> pr = cogrooFacade.processText(text); if (LOG.isDebugEnabled()) { LOG.debug("Text processed. Results:"); for (ProcessResult processResult : pr) { LOG.debug("... " + processResult.getTextAnnotatedWithErrors()); } } result .include("analyzed", true) .include("cleanText", text) .include("annotatedText", cogrooFacade.getAnnotatedText(text, pr)) .include("singleGrammarErrorList", cogrooFacade.asSingleGrammarErrorList(text, pr)) .include("omissionCategoriesList", this.errorEntryLogic.getErrorCategoriesForUser()) .include("processResultList", pr) .redirectTo(getClass()) .addReport(); } else { result.redirectTo(getClass()).addReport(); } } catch (Exception e) { LOG.error("Error processing text: " + text, e); } }
@Get @Path("/reports/{errorEntry.id}") public void details(ErrorEntry errorEntry) { if (errorEntry == null) { result.redirectTo(getClass()).list(); return; } ErrorEntry errorEntryFromDB = errorEntryDAO.retrieve(new Long(errorEntry.getId())); LOG.debug("Details for: " + errorEntryFromDB); if (errorEntryFromDB == null) { result.notFound(); return; } result .include("errorEntry", errorEntryFromDB) .include("processResultList", cogrooFacade.cachedProcessText(errorEntryFromDB.getText())) .include("priorities", Priority.values()) .include("states", State.values()); String title = "Problema Nº. " + errorEntryFromDB.getId() + ": " + errorEntryFromDB.getText(); String sender = "Enviado por: " + errorEntryFromDB.getSubmitter().getName(); String version = "Versão: " + errorEntryFromDB.getVersion().getVersion(); String creationDate = "Criado em: " + DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG) .format(errorEntryFromDB.getCreation()); String changeDate = "Modificado em: " + DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG) .format(errorEntryFromDB.getModified()); String type = "Tipo: "; String details = null; if (errorEntryFromDB.getOmission() == null) { type += "Intervenção indevida"; String rule = "Regra: " + errorEntryFromDB.getBadIntervention().getRule(); String classification = "Erro: " + messages.getString( errorEntryFromDB.getBadIntervention().getClassification().toString()); details = rule + "; " + classification; } else { type += "Omissão"; String category = "Categoria" + (errorEntryFromDB.getOmission().getCategory() == null ? " (personalizada): " + errorEntryFromDB.getOmission().getCustomCategory() : ": " + errorEntryFromDB.getOmission().getCategory()); String replaceBy = "Substituir por: " + errorEntryFromDB.getOmission().getReplaceBy(); details = category + "; " + replaceBy; } String description = sender + "; " + version + "; " + type + "; " + details + "; " + creationDate + "; " + changeDate; result .include("headerTitle", StringEscapeUtils.escapeHtml(title)) .include("headerDescription", StringEscapeUtils.escapeHtml(description)); }