I have three methods in API running similar code snippets. For this reuse the code inserted a switch-case according to the API method.
It's good practice that? I mean, this isn't a high coupling and low cohesion? There is another better way?
API
@ApiOperation(value = "Gerar permalinks de todos os arquivos com validação", response = Permalink.class)
@RequestMapping(value = "{validacaoId}/permalink/all", method = RequestMethod.POST)
public Permalink gerarPermalinkComValidacao(@PathVariable("validacaoId") String validacaoId) {
return permalinkService.createPermalink(validacaoId, "Permalink com validação");
}
@ApiOperation(value = "Gerar permalinks de todos os arquivos NOKS com validação", response = Permalink.class)
@RequestMapping(value = "{validacaoId}/permalink/noks", method = RequestMethod.POST)
public Permalink gerarPermalinkNoks(@PathVariable("validacaoId") String validacaoId) {
return permalinkService.createPermalink(validacaoId, "Permalink NOKS com validação");
}
@ApiOperation(value = "Gerar permalinks de todos os arquivos sem validação", response = Permalink.class)
@RequestMapping(value = "{validacaoId}/permalink", method = RequestMethod.POST)
public Permalink gerarPermalinkSemValidacao(@PathVariable("validacaoId") String validacaoId) {
return permalinkService.createPermalink(validacaoId, "Permalink sem validação");
}
Service
public Permalink createPermalink(String validacaoId, String tipo) {
Validacao validacao = validacaoDAO.findById(validacaoId);
Permalink permalink = new Permalink().setId(Util.getMd5Time(validacaoId));
if (validacao == null) {
throw new NotFoundException("Erro ao gerar permalink: ID da validação inválido.");
}
permalinkDAO.createPermalinkDirectory(validacao.getId());
BasicDBList pecas;
switch (tipo) {
case "Permalink com validação":
pecas = getAllFilesWithValidation(validacao.getId(), permalink.getId());
break;
case "Permalink NOKS com validação":
pecas = noksWithValidation(validacao.getId());
break;
case "Permalink sem validação":
pecas = getAllFiles(validacao.getId(), permalink.getId());
break;
default:
throw new IllegalArgumentException("Tipo de permalink inválido.");
}
if (!pecas.isEmpty()) {
permalink.setEmail(validacao.getEmail())
.setLogo(permalinkDAO.getLogo(validacao.getInstancia()).getString("logo", ""))
.setDataCriacao(DateTime.nowISODate())
.setTipo(tipo)
.setValidacaoId(validacao.getId())
.setInstancia(validacao.getInstancia())
.setPecas(pecas);
permalinkDAO.create(permalink);
return permalink;
}
throw new InternalServerErrorException("Erro ao obter peças para permalink.");
}