package br.com.sl.domain.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.sl.domain.model.Ativo;
import br.com.sl.domain.model.Candle;
import br.com.sl.domain.service.AtivoService;
import br.com.sl.repository.AtivoRepository;
@Service
public class AtivoServiceImpl
extends AbstractService
<Ativo
> implements AtivoService
{
private AtivoRepository ativoRepository
;
@Autowired
public AtivoServiceImpl
(AtivoRepository ativoRepository, Validador validador
) {
super(validador
);
this.
ativoRepository = ativoRepository
;
}
@
Override
protected GenericRepository
<Ativo
> getRepository
() {
return this.
ativoRepository;
}
@
Override
public Ativo consultarPorDescricao
(String descricaoAtivo
) {
return ativoRepository.
consultarPorNome(descricaoAtivo
);
}
@
Override
public List<Ativo
> preencherCandlesComAtivosRetornandoAtivosUtilizados
(List<Candle
> candles
) {
List<Ativo
> ativosEmAnalise =
new ArrayList<Ativo
>();
List<Ativo
> ativosCadastrados =
this.
consultarTodos(new Ativo
());
for (Candle candle : candles
) {
Ativo ativoEmAnalise = retornarAtivoConstaNaLista
(ativosCadastrados, candle.
getNomeAtivo());
if (VerificadorUtil.
naoEstaNulo(ativoEmAnalise
)) {
if (!ativosEmAnalise.
contains(ativoEmAnalise
)) {
ativosEmAnalise.
add(ativoEmAnalise
);
}
candle.
setAtivo(ativoEmAnalise
);
}
}
return ativosEmAnalise
;
}
private Ativo retornarAtivoConstaNaLista
(List<Ativo
> ativos,
String nomeAtivo
) {
for (Ativo ativo : ativos
) {
if (ativo.
getNome().
equals(nomeAtivo
)) {
return ativo
;
}
}
return null;
}
}