use of org.springframework.web.bind.annotation.PathVariable in project goci by EBISPOT.
the class AssociationController method addMultiSnps.
@RequestMapping(value = "/studies/{studyId}/associations/add_multi", produces = MediaType.TEXT_HTML_VALUE, method = RequestMethod.POST)
public String addMultiSnps(@ModelAttribute("form") @Valid SnpAssociationStandardMultiForm snpAssociationStandardMultiForm, BindingResult bindingResult, @PathVariable Long studyId, Model model, @RequestParam(required = true) String measurementType, HttpServletRequest request) throws EnsemblMappingException {
Study study = studyRepository.findOne(studyId);
model.addAttribute("study", study);
model.addAttribute("measurementType", measurementType);
// Binding vs Validator issue. File: messages.properties
if (bindingResult.hasErrors()) {
model.addAttribute("form", snpAssociationStandardMultiForm);
return "add_multi_snp_association";
}
// Check for errors in form that would prevent saving an association
List<AssociationValidationView> rowErrors = associationOperationsService.checkSnpAssociationFormErrors(snpAssociationStandardMultiForm, measurementType);
if (!rowErrors.isEmpty()) {
model.addAttribute("errors", rowErrors);
model.addAttribute("form", snpAssociationStandardMultiForm);
model.addAttribute("criticalErrorsFound", true);
return "add_multi_snp_association";
} else {
// Create an association object from details in returned form
Association newAssociation = singleSnpMultiSnpAssociationService.createAssociation(snpAssociationStandardMultiForm);
// Save and validate form
String eRelease = ensemblRestTemplateService.getRelease();
Collection<AssociationValidationView> errors = associationOperationsService.saveAssociationCreatedFromForm(study, newAssociation, currentUserDetailsService.getUserFromRequest(request), eRelease);
// Determine if we have any errors rather than warnings
long errorCount = errors.stream().filter(validationError -> !validationError.getWarning()).count();
if (errorCount > 0) {
model.addAttribute("errors", errors);
model.addAttribute("form", snpAssociationStandardMultiForm);
model.addAttribute("criticalErrorsFound", true);
return "add_multi_snp_association";
} else {
return "redirect:/associations/" + newAssociation.getId();
}
}
}
use of org.springframework.web.bind.annotation.PathVariable in project goci by EBISPOT.
the class AssociationController method editAssociation.
// Edit existing association
// We tried to remap if the snp or genes changed.
// TODO : implement something for SNP:SNP iteration. Actually we remap.
@RequestMapping(value = "/associations/{associationId}", produces = MediaType.TEXT_HTML_VALUE, method = RequestMethod.POST)
public // TODO COULD REFACTOR TO JUST USE SUPERCLASS AS METHOD PARAMETER
String editAssociation(@ModelAttribute SnpAssociationStandardMultiForm snpAssociationStandardMultiForm, @ModelAttribute SnpAssociationInteractionForm snpAssociationInteractionForm, @PathVariable Long associationId, @RequestParam(value = "associationtype", required = true) String associationType, Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws EnsemblMappingException {
// Establish study and association we are editing
Collection<String> previousAuthorReportedGenes = new HashSet<>();
Collection<String> authorReportedGenes = new HashSet<>();
Collection<String> previousSnps = new HashSet<>();
Collection<String> snps = new HashSet<>();
String isToRemapping = "yes";
Association associationToEdit = associationRepository.findOne(associationId);
Long studyId = associationToEdit.getStudy().getId();
Study study = studyRepository.findOne(studyId);
model.addAttribute("study", study);
AssociationReport oldAssociationReport = associationToEdit.getAssociationReport();
previousAuthorReportedGenes = associationOperationsService.getGenesIds(associationToEdit.getLoci());
previousSnps = associationOperationsService.getSpnsName(associationToEdit.getSnps());
// Determine if association is an OR or BETA type
String measurementType = associationOperationsService.determineIfAssociationIsOrType(associationToEdit);
model.addAttribute("measurementType", measurementType);
// Validate returned form depending on association type
List<AssociationValidationView> criticalErrors = new ArrayList<>();
if (associationType.equalsIgnoreCase("interaction")) {
criticalErrors = associationOperationsService.checkSnpAssociationInteractionFormErrorsForView(snpAssociationInteractionForm, measurementType);
} else {
criticalErrors = associationOperationsService.checkSnpAssociationFormErrors(snpAssociationStandardMultiForm, measurementType);
}
// If errors found then return the edit form with all information entered by curator preserved
if (!criticalErrors.isEmpty()) {
// Get mapping details
model.addAttribute("mappingDetails", associationOperationsService.createMappingDetails(associationToEdit));
// Return any association errors
model.addAttribute("errors", criticalErrors);
model.addAttribute("criticalErrorsFound", true);
if (associationType.equalsIgnoreCase("interaction")) {
model.addAttribute("form", snpAssociationInteractionForm);
return "edit_snp_interaction_association";
} else {
model.addAttribute("form", snpAssociationStandardMultiForm);
// Determine view
if (associationToEdit.getMultiSnpHaplotype()) {
return "edit_multi_snp_association";
} else {
return "edit_standard_snp_association";
}
}
} else {
// Create association
Association editedAssociation;
// Request parameter determines how to process form and also which form to process
if (associationType.equalsIgnoreCase("interaction")) {
editedAssociation = snpInteractionAssociationService.createAssociation(snpAssociationInteractionForm);
} else {
editedAssociation = singleSnpMultiSnpAssociationService.createAssociation(snpAssociationStandardMultiForm);
// New snps to compare with the previousSnps.
Collection<SnpFormRow> newSnpsList = snpAssociationStandardMultiForm.getSnpFormRows();
if (newSnpsList != null && !newSnpsList.isEmpty()) {
for (SnpFormRow snp : newSnpsList) {
snps.add(snp.getSnp());
}
}
}
authorReportedGenes = associationOperationsService.getGenesIds(editedAssociation.getLoci());
if (oldAssociationReport != null) {
if ((previousAuthorReportedGenes.size() == authorReportedGenes.size()) && (snps.size() == snps.size())) {
// check the values
if ((authorReportedGenes.equals(previousAuthorReportedGenes)) && (snps.equals(previousSnps))) {
editedAssociation.setLastMappingDate(associationToEdit.getLastMappingDate());
editedAssociation.setLastMappingPerformedBy(associationToEdit.getLastMappingPerformedBy());
editedAssociation.setAssociationReport(oldAssociationReport);
isToRemapping = "no";
}
}
}
if ((oldAssociationReport != null) && (isToRemapping.compareTo("yes") == 0)) {
associationOperationsService.deleteAssocationReport(associationToEdit.getAssociationReport().getId());
}
// Save and validate form
String eRelease = ensemblRestTemplateService.getRelease();
Collection<AssociationValidationView> errors = associationOperationsService.saveEditedAssociationFromForm(study, editedAssociation, associationId, currentUserDetailsService.getUserFromRequest(request), eRelease);
// Determine if we have any errors rather than warnings
long errorCount = errors.stream().filter(validationError -> !validationError.getWarning()).count();
if (errorCount > 0) {
// Get mapping details for association we're editing
model.addAttribute("mappingDetails", associationOperationsService.createMappingDetails(associationToEdit));
model.addAttribute("errors", errors);
model.addAttribute("criticalErrorsFound", true);
if (associationType.equalsIgnoreCase("interaction")) {
model.addAttribute("form", snpAssociationInteractionForm);
return "edit_snp_interaction_association";
} else {
model.addAttribute("form", snpAssociationStandardMultiForm);
// Determine view
if (associationToEdit.getMultiSnpHaplotype()) {
return "edit_multi_snp_association";
} else {
return "edit_standard_snp_association";
}
}
} else {
redirectAttributes.addFlashAttribute("isToRemapping", isToRemapping);
return "redirect:/associations/" + associationId;
}
}
}
use of org.springframework.web.bind.annotation.PathVariable in project cas by apereo.
the class UmaFindPolicyForResourceSetEndpointController method getPolicyForResourceSet.
/**
* Gets policy for resource set.
*
* @param resourceId the resource id
* @param policyId the policy id
* @param request the request
* @param response the response
* @return the policy for resource set
*/
@GetMapping(value = '/' + OAuth20Constants.BASE_OAUTH20_URL + "/{resourceId}/" + OAuth20Constants.UMA_POLICY_URL + "/{policyId}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity getPolicyForResourceSet(@PathVariable(value = "resourceId") final long resourceId, @PathVariable(value = "policyId") final long policyId, final HttpServletRequest request, final HttpServletResponse response) {
try {
val profileResult = getAuthenticatedProfile(request, response, OAuth20Constants.UMA_PROTECTION_SCOPE);
val resourceSetResult = getUmaConfigurationContext().getUmaResourceSetRepository().getById(resourceId);
if (resourceSetResult.isEmpty()) {
val model = buildResponseEntityErrorModel(HttpStatus.NOT_FOUND, "Requested resource-set cannot be found");
return new ResponseEntity(model, model, HttpStatus.BAD_REQUEST);
}
val resourceSet = resourceSetResult.get();
resourceSet.validate(profileResult);
val policyResult = resourceSet.getPolicies().stream().filter(p -> p.getId() == policyId).findFirst();
if (policyResult.isPresent()) {
val model = CollectionUtils.wrap("entity", policyResult.get(), "code", HttpStatus.FOUND);
return new ResponseEntity(model, HttpStatus.OK);
}
val model = CollectionUtils.wrap("code", HttpStatus.NOT_FOUND);
return new ResponseEntity(model, HttpStatus.OK);
} catch (final Exception e) {
LoggingUtils.error(LOGGER, e);
}
return new ResponseEntity("Unable to locate resource-set.", HttpStatus.BAD_REQUEST);
}
use of org.springframework.web.bind.annotation.PathVariable in project cas by apereo.
the class UmaDeletePolicyForResourceSetEndpointController method deletePoliciesForResourceSet.
/**
* Delete policy for resource set.
*
* @param resourceId the resource id
* @param policyId the policy id
* @param request the request
* @param response the response
* @return the policy for resource set
*/
@DeleteMapping(value = '/' + OAuth20Constants.BASE_OAUTH20_URL + "/{resourceId}/" + OAuth20Constants.UMA_POLICY_URL + "/{policyId}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity deletePoliciesForResourceSet(@PathVariable(value = "resourceId") final long resourceId, @PathVariable(value = "policyId") final long policyId, final HttpServletRequest request, final HttpServletResponse response) {
try {
val profileResult = getAuthenticatedProfile(request, response, OAuth20Constants.UMA_PROTECTION_SCOPE);
val resourceSetResult = getUmaConfigurationContext().getUmaResourceSetRepository().getById(resourceId);
if (resourceSetResult.isEmpty()) {
val model = buildResponseEntityErrorModel(HttpStatus.NOT_FOUND, "Requested resource-set cannot be found");
return new ResponseEntity(model, model, HttpStatus.BAD_REQUEST);
}
val resourceSet = resourceSetResult.get();
resourceSet.validate(profileResult);
val policies = resourceSet.getPolicies().stream().filter(p -> p.getId() != policyId).collect(Collectors.toSet());
resourceSet.setPolicies(new HashSet<>(policies));
val saved = getUmaConfigurationContext().getUmaResourceSetRepository().save(resourceSet);
val model = CollectionUtils.wrap("entity", saved, "code", HttpStatus.OK);
return new ResponseEntity(model, HttpStatus.OK);
} catch (final Exception e) {
LoggingUtils.error(LOGGER, e);
}
return new ResponseEntity("Unable to locate resource-set.", HttpStatus.BAD_REQUEST);
}
use of org.springframework.web.bind.annotation.PathVariable in project cas by apereo.
the class DuoSecurityAdminApiEndpoint method getUser.
/**
* Fetch duo user account from admin api.
*
* @param username the username
* @param providerId the provider id
* @return the map
*/
@GetMapping(path = "/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Fetch Duo Security user account from Duo Admin API", parameters = { @Parameter(name = "username", required = true, in = ParameterIn.PATH), @Parameter(name = "providerId") })
public Map<String, DuoSecurityUserAccount> getUser(@PathVariable("username") final String username, @RequestParam(required = false) final String providerId) {
val results = new LinkedHashMap<String, DuoSecurityUserAccount>();
val providers = applicationContext.getBeansOfType(DuoSecurityMultifactorAuthenticationProvider.class).values();
providers.stream().filter(Objects::nonNull).map(DuoSecurityMultifactorAuthenticationProvider.class::cast).filter(provider -> StringUtils.isBlank(providerId) || provider.matches(providerId)).filter(provider -> provider.getDuoAuthenticationService().getAdminApiService().isPresent()).forEach(Unchecked.consumer(p -> {
val duoService = p.getDuoAuthenticationService().getAdminApiService().get();
duoService.getDuoSecurityUserAccount(username).ifPresent(user -> results.put(p.getId(), user));
}));
return results;
}
Aggregations