use of uk.ac.ebi.spot.goci.model.Study in project goci by EBISPOT.
the class StudyNoteController method saveNote.
@RequestMapping(value = "/studies/{studyId}/notes", method = RequestMethod.POST, params = { "saveNote" })
public String saveNote(@ModelAttribute("multiStudyNoteForm") @Valid MultiStudyNoteForm multiStudyNoteForm, BindingResult bindingResult, Model model, @PathVariable Long studyId, HttpServletRequest req) {
// Index of value to save
final Integer rowId = Integer.valueOf(req.getParameter("saveNote"));
// get the study
Study study = studyRepository.findOne(studyId);
model.addAttribute("study", study);
// the newly added note can only be assigned one of the availlable subject, not including system note subjects.
Collection<NoteSubject> noteSubjects = noteSubjectService.findAvailableNoteSubjectForStudy(study);
model.addAttribute("availableNoteSubject", noteSubjects);
// form validation
if (bindingResult.hasErrors()) {
// reload system notes because they are not part of the input
multiStudyNoteForm.setSystemNoteForms(studyNoteOperationsService.generateSystemNoteForms(study.getNotes()));
model.addAttribute("availableNoteSubject", noteSubjects);
model.addAttribute("multiStudyNoteForm", multiStudyNoteForm);
return "study_notes";
}
// convert studynoteform to studynote domain object and save
StudyNoteForm snf = multiStudyNoteForm.getNomalNoteForms().get(rowId.intValue());
StudyNote noteToEdit = studyNoteOperationsService.convertToStudyNote(snf, study);
SecureUser user = currentUserDetailsService.getUserFromRequest(req);
ErrorNotification notification = studyOperationsService.addStudyNote(study, noteToEdit, user);
if (!notification.hasErrors()) {
return "redirect:/studies/" + studyId + "/notes";
} else {
// deal with error
// we want to display the error to the user simply on top of the form
getLog().warn("Request: " + req.getRequestURL() + " raised an error." + notification.errorMessage());
model.addAttribute("errors", "Update FAIL! " + notification.errorMessage());
multiStudyNoteForm.setSystemNoteForms(studyNoteOperationsService.generateSystemNoteForms(study.getNotes()));
model.addAttribute("availableNoteSubject", noteSubjects);
model.addAttribute("multiStudyNoteForm", multiStudyNoteForm);
}
return "study_notes";
}
use of uk.ac.ebi.spot.goci.model.Study in project goci by EBISPOT.
the class StudyRestController method getStudies.
@GetMapping(value = Endpoint.PUBLIC_STUDIES, produces = MediaTypes.HAL_JSON_VALUE)
public Object getStudies(PagedResourcesAssembler<Study> assembler, @PageableDefault(size = 20) Pageable pageable) {
Page<Study> studies = studyDataService.getStudiesByHousekeepingStatus(pageable, true);
final ControllerLinkBuilder linkBuilder = ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(StudyRestController.class).getStudies(assembler, pageable));
return assembler.toResource(studies, publicStudyAssembler, linkBuilder.withSelfRel());
}
use of uk.ac.ebi.spot.goci.model.Study in project goci by EBISPOT.
the class StudyNoteController method addNoteToTable.
@RequestMapping(value = "/studies/{studyId}/notes", method = RequestMethod.POST, params = { "addNote" })
public String addNoteToTable(Model model, @PathVariable Long studyId, HttpServletRequest request) {
// get the study
Study study = studyRepository.findOne(studyId);
model.addAttribute("study", study);
// disabled the check because we want to add note to the table
// if(study.getHousekeeping().getIsPublished()){
// return "redirect:/studies/" + studyId + "/notes";
// }
// the newly added note can only be assigned one of the availlable subject, not including system note subjects.
Collection<NoteSubject> noteSubjects = noteSubjectService.findAvailableNoteSubjectForStudy(study);
model.addAttribute("availableNoteSubject", noteSubjects);
SecureUser user = currentUserDetailsService.getUserFromRequest(request);
// an form object mapped from the studyNote object, it contains a list of notes
MultiStudyNoteForm msnf = studyNoteOperationsService.generateMultiStudyNoteForm(study.getNotes(), study, user);
// create a default study note with default setting
StudyNote emptyNote = studyNoteOperationsService.createEmptyStudyNote(study, user);
StudyNoteForm emptyNoteForm = studyNoteOperationsService.convertToStudyNoteForm(emptyNote);
// attach the empty form
msnf.getNomalNoteForms().add(0, emptyNoteForm);
// Index of value to add
// final Integer rowId = msnf.getNomalNoteForms().size()-1;
// enable the edit for the new note and disable all edit for other notes
msnf.startEdit(0);
// reload system notes because they are not part of the input
msnf.setSystemNoteForms(studyNoteOperationsService.generateSystemNoteForms(study.getNotes()));
model.addAttribute("multiStudyNoteForm", msnf);
return "study_notes";
}
use of uk.ac.ebi.spot.goci.model.Study in project goci by EBISPOT.
the class StudyNoteController method removeNote.
@RequestMapping(value = "/studies/{studyId}/notes", method = RequestMethod.POST, params = { "removeNote" })
public String removeNote(@ModelAttribute("multiStudyNoteForm") MultiStudyNoteForm multiStudyNoteForm, BindingResult bindingResult, Model model, @PathVariable Long studyId, HttpServletRequest req) {
// Index of value to remove
final Integer rowId = Integer.valueOf(req.getParameter("removeNote"));
// get the study
Study study = studyRepository.findOne(studyId);
model.addAttribute("study", study);
StudyNoteForm snf = multiStudyNoteForm.getNomalNoteForms().get(rowId.intValue());
StudyNote noteToRemove = studyNoteOperationsService.convertToStudyNote(snf, study);
// if not removing empty row
if (noteToRemove.getId() != null) {
ErrorNotification notification = studyOperationsService.deleteStudyNote(study, noteToRemove);
if (notification.hasErrors()) {
// we want to display the error to the user simply on top of the form
getLog().warn("Request: " + req.getRequestURL() + " raised an error." + notification.errorMessage());
model.addAttribute("errors", "Delete FAIL! " + notification.errorMessage());
Collection<NoteSubject> noteSubjects = noteSubjectService.findAvailableNoteSubjectForStudy(study);
model.addAttribute("availableNoteSubject", noteSubjects);
model.addAttribute("multiStudyNoteForm", multiStudyNoteForm);
return "study_notes";
} else {
return "redirect:/studies/" + studyId + "/notes";
}
}
return "redirect:/studies/" + studyId + "/notes";
}
use of uk.ac.ebi.spot.goci.model.Study in project goci by EBISPOT.
the class StudyNoteController method duplicateNoteAcrossPublication.
@RequestMapping(value = "/studies/{studyId}/notes", method = RequestMethod.POST, params = { "duplicateNote" })
public String duplicateNoteAcrossPublication(Model model, @PathVariable Long studyId, HttpServletRequest req) {
final Long noteId = Long.valueOf(req.getParameter("duplicateNote"));
SecureUser user = currentUserDetailsService.getUserFromRequest(req);
Study study = studyRepository.findOne(studyId);
ErrorNotification notification = studyOperationsService.duplicateStudyNoteToSiblingStudies(study, noteId, user);
if (notification.hasErrors()) {
// we want to display the error to the user simply on top of the form
getLog().warn("Request: " + req.getRequestURL() + " raised an error." + notification.errorMessage());
model.addAttribute("errors", "Duplicate FAIL! " + notification.errorMessage());
// redirectAttributes.addFlashAttribute("errors", "Duplicate FAIL! " + notification.errorMessage());
// req.setAttribute("errors", "Duplicate FAIL! " + notification.errorMessage());
}
return "redirect:/studies/" + studyId + "/notes";
}
Aggregations