if (id == null) {
throw new NullPointerException();
}
Funcionario object = get(id);
object.setNome(nome);
object.setLogin(login);
if (senha != null && senha.trim().length() > 0) {
object.setSenha(senha);
}
object.setEmail(email);
object.setSituacao(situacao);
object.setPerfil((Perfil) perfilDao.get(perfil));
object.setInstituicao(orgao);
object.setListaFuncionalidade(listas(funcionalidades,
Funcionalidade.class));
object.setListaAssunto(listas(tipoAssunto, Assunto.class));
object.setListaTipoMensagem(listas(tipoMensagem, TipoMensagem.class));
object.setMotivoNivelAtuacao(motivo);
object.setConsultor(consultor);
if (!Perfil.ADMINISTRADOR.equals(object.getPerfil())) {
/* Inicializo as collections, caso não existam */
if (object.getListaInstituicao() == null) {
object.setListaInstituicao(new TreeSet());
}
if (object.getListaLocalidadeOcorrencia() == null) {
object.setListaLocalidadeOcorrencia(new TreeSet());
}
/* Limpo as collections dependendo do nível de acesso do gestor */
if (gestor.getNivelAtuacao() == Funcionario.NA_ORGAO) {
object.getListaInstituicao().clear();
object.getListaLocalidadeOcorrencia().clear();
} else {
object.getListaInstituicao().removeAll(
gestor.getListaInstituicao());
object.getListaLocalidadeOcorrencia().removeAll(
gestor.getListaLocalidadeOcorrencia());
}
/*
* Preencho as collections dependendo do nível de acesso
*/
if (nivelAcesso.equals("O")) {
object.getListaInstituicao().add(orgao);
} else {
object.getListaInstituicao().addAll(
listas(subOrgao, Instituicao.class));
object.getListaLocalidadeOcorrencia().addAll(
listas(localidades, LocalidadeOcorrencia.class));
}
}
/* Redireciono meus acionamentos, caso eu me torne inativo */
List acionamentos = new ArrayList();
boolean erro = false;
if (!object.getSituacao().equals(Funcionario.ATIVO)
&& object.getListaAcionamento() != null) {
for (Iterator iter = object.getListaAcionamento().iterator(); iter
.hasNext();) {
Acionamento acionamento = (Acionamento) iter.next();
if (!(acionamento.getEstadoAcionamento().equals(
EstadoAcionamento.RESPONDIDO) || acionamento
.getEstadoAcionamento().equals(