Boa noite pessoal. Estou recorrendo mais uma vez ao grupo do fórum para uma análise sobre uma regra de negócio que estou implementando.
Tenho um conceito no meu negócio de operação que envolve muitas Domains, para isso criei um Command Object para trafegar os valores entre minha camada de view e o servidor.
Quero implementar um sistema de cadastro, que funciona por upload de um arquivo em excel, ou seja ele lê o arquivo, vai na primeira linha e popula um objeto para mim. Consegui fazer a leitura dele normalmente e popular um obj. que criei. Até aí sem problemas.
* Esta leitura é realizada em uma service.
Pensei em popular o Command OBject, fazer a validação e depois de criar esta lista de CO*, se nenhum possuir erros, eu salvo eles no banco e devolvo a mensagem de sucesso para o usuário.
Queria saber se alguém já desenvolveu isto, e como foi que realizou esta atividade, apesar dela estar bem encaminhada, não tenho muita certeza se esta é a forma mais adequada (acessar o CO pela service).
Esta é a minha service:
class UploadService {
def workbook
ExcelBuilder builder = new ExcelBuilder()
/**
* Método responsável por fazer a leitura do arquivo de excel
* e popular o Command Object
* @param file
* @return
*/
def readExcel(CommonsMultipartFile file){
switch (file.contentType) {
case "application/vnd.ms-excel":
workbook = readFileXls(file)
break;
case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
workbook = readFileXlsx(file)
break;
}
try{
builder.ExcelBuilderXLS(workbook).eachLine([labels:true]) { workbook ->
//Aqui é onde populo e valido meus objetos e armazeno em uma lista em caso positivo, se houver algum erro, ele devolve a mensagem para o usuário
}
}catch(Exception ex){
throw new RuntimeException(ex.printStackTrace(), ex)
}
Desde já agradeço as respostas