package br.gov.al.saude.test.builder;
import static br.gov.al.saude.test.util.ConversorDeTipo.FORMAT_DATE_DD_MM_YYYY_HH_MM_SS;
import static br.gov.al.saude.test.util.ConversorDeTipo.converterStringParaDate;
import static br.gov.al.saude.test.util.ConversorDeTipo.converterStringParaLong;
import java.util.HashSet;
import java.util.Set;
import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.scs.model.Frequencia;
import br.gov.al.saude.scs.model.Presenca;
import br.gov.al.saude.scs.model.Turma;
import br.gov.al.saude.test.unidade.generic.builder.AbstractEntidadeBuilder;
public class FrequenciaBuilder
extends AbstractEntidadeBuilder
<Frequencia
> {
@
Override
protected void inicializarDadosDefault
() {
entidade =
new Frequencia
();
entidade.
setPresencas(new HashSet<Presenca
>());
}
public FrequenciaBuilder comSequencial
(String sequencialFrequencia
) {
entidade.
setSequencial(converterStringParaLong
(sequencialFrequencia
));
return this;
}
public FrequenciaBuilder comTurma
(Turma turma
) {
entidade.
setTurma(turma
);
return this;
}
public FrequenciaBuilder comTurma
(String sequencialTurma
) {
Turma turma =
null;
if(VerificadorUtil.
naoEstaNuloOuVazio(sequencialTurma
)){
turma =
new TurmaBuilder
().
comSequencial(sequencialTurma
).
build();
}
entidade.
setTurma(turma
);
return this;
}
public FrequenciaBuilder comData
(String data
) {
entidade.
setData(converterStringParaDate
(data, FORMAT_DATE_DD_MM_YYYY_HH_MM_SS
));
return this;
}
public FrequenciaBuilder comPresencas
(String listaPresencas
) {
Set<Presenca
> setPresencas =
new HashSet<Presenca
>();
if(VerificadorUtil.
naoEstaNuloOuVazio(listaPresencas
)){
String[] arrayPresenca = listaPresencas.
split(";");
for (String stringPresenca : arrayPresenca
) {
String[] presencaSplit = stringPresenca.
split(",");
Presenca presenca =
new PresencaBuilder
()
.
comFrequencia(entidade
)
.
comSequencialTurmaParticipante(getValor
(presencaSplit,
1))
.
comIndicadorPresenca(getValor
(presencaSplit,
2))
.
comJustificativa(getValor
(presencaSplit,
3))
.
build();
setPresencas.
add(presenca
);
}
}
entidade.
setPresencas(setPresencas
);
return this;
}
private String getValor
(String[] presencaSplit,
int posicao
) {
try {
return presencaSplit
[posicao
];
} catch (IndexOutOfBoundsException e
) {
return null;
}
}
}