From 34ac118fe2e9cddd38d8929ae57a799dbf650091 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Thu, 22 Dec 2016 14:07:37 +0100 Subject: [PATCH] refactoring : try to reduce NPath complexity --- .../eu/hbp/mip/controllers/ModelsApi.java | 94 ++++++++++--------- 1 file changed, 50 insertions(+), 44 deletions(-) diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java index ada7e3b85..3a13867b8 100644 --- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java @@ -118,72 +118,78 @@ public class ModelsApi { model.setValid(false); } - // Ensure the title is unique - boolean titleExists = true; - for(int i = 1; titleExists; i++) + ensureTitleUniqueness(model); + ensureSlugUniqueness(model); + + Map<String, String> map = new HashMap<>(model.getConfig().getTitle()); + map.put("text", model.getTitle()); + model.getConfig().setTitle(map); + + saveVariables(model.getQuery().getVariables()); + saveVariables(model.getQuery().getCovariables()); + saveVariables(model.getQuery().getGrouping()); + + configRepository.save(model.getConfig()); + queryRepository.save(model.getQuery()); + datasetRepository.save(model.getDataset()); + modelRepository.save(model); + + LOGGER.info("Model saved (also saved model.config and model.query)"); + + return ResponseEntity.status(HttpStatus.CREATED).body(model); + } + + private void saveVariables(@RequestBody @ApiParam(value = "Model to create", required = true) List<Variable> variables) { + for (Variable var : variables) { - String title = model.getTitle(); - titleExists = modelRepository.countByTitle(title) > 0; - if(titleExists) + variableRepository.save(var); + } + } + + private void ensureSlugUniqueness(@RequestBody @ApiParam(value = "Model to create", required = true) Model model) { + String slug = createSlug(model.getTitle()); + boolean slugExists = true; + for(int i = 1; slugExists; i++) + { + slugExists = modelRepository.exists(slug); + if(slugExists) { if(i > 1) { - title = title.substring(0, title.length()-4); + slug = slug.substring(0, slug.length()-2); } - model.setTitle(title + " (" + i + ")"); + slug += "-"+i; } + model.setSlug(slug); } + } - // Create slug from title + private String createSlug(@RequestBody @ApiParam(value = "Model to create", required = true) String title) { String slug; try { - slug = new Slugify().slugify(model.getTitle()); + slug = new Slugify().slugify(title); } catch (IOException e) { slug = ""; // Should never happen LOGGER.trace(e); } + return slug; + } - // Ensure slug is unique - boolean slugExists = true; - for(int i = 1; slugExists; i++) + private void ensureTitleUniqueness(@RequestBody @ApiParam(value = "Model to create", required = true) Model model) { + boolean titleExists = true; + for(int i = 1; titleExists; i++) { - slugExists = modelRepository.exists(slug); - if(slugExists) + String title = model.getTitle(); + titleExists = modelRepository.countByTitle(title) > 0; + if(titleExists) { if(i > 1) { - slug = slug.substring(0, slug.length()-2); + title = title.substring(0, title.length()-4); } - slug += "-"+i; + model.setTitle(title + " (" + i + ")"); } - model.setSlug(slug); } - - Map<String, String> map = new HashMap<>(model.getConfig().getTitle()); - map.put("text", model.getTitle()); - model.getConfig().setTitle(map); - - for (Variable var : model.getQuery().getVariables()) - { - variableRepository.save(var); - } - for (Variable var : model.getQuery().getCovariables()) - { - variableRepository.save(var); - } - for (Variable var : model.getQuery().getGrouping()) - { - variableRepository.save(var); - } - - configRepository.save(model.getConfig()); - queryRepository.save(model.getQuery()); - datasetRepository.save(model.getDataset()); - modelRepository.save(model); - - LOGGER.info("Model saved (also saved model.config and model.query)"); - - return ResponseEntity.status(HttpStatus.CREATED).body(model); } @ApiOperation(value = "Get a model", response = Model.class) -- GitLab