}
}
if (erroLogica) {
PerfilCtrl perfilCtrl = new PerfilCtrl(getDaoFactory());
Funcionario object = new Funcionario();
object.setNome(funcionarioForm.getNome());
object.setLogin(funcionarioForm.getLogin());
object.setSenha("default");
object.setSituacao(funcionarioForm.getSituacao());
object.setListaFuncionalidade(defaultCtrl.listas(
funcionarioForm.getFuncionalidades(), Funcionalidade.class));
object.setListaAssunto(defaultCtrl.listas(
funcionarioForm.getTipoAssunto(), Assunto.class));
object.setListaTipoMensagem(defaultCtrl.listas(
funcionarioForm.getTipoMensagem(), TipoMensagem.class));
object.setSituacao(funcionarioForm.getSituacao());
object.setPerfil(perfilCtrl.get(funcionarioForm.getPerfil()));
object.setInstituicao(getOrgao(request));
object.setListaInstituicao(defaultCtrl.listas(
funcionarioForm.getSubOrgao(), SubOrgao.class));
object.setListaLocalidadeOcorrencia(defaultCtrl.listas(
funcionarioForm.getLocalidades(),
LocalidadeOcorrencia.class));
Comparator ordem = new Comparator() {
public int compare(Object obj1, Object obj2) {
PersistentObject pobj1 = (PersistentObject) obj1;
PersistentObject pobj2 = (PersistentObject) obj2;
if (pobj1 != null && pobj1.getDescricao() != null) {
return pobj1.getDescricao().compareTo(
pobj2.getDescricao());
}
return 0;
}
};
/* Lista de Sub-órgãos */
SubOrgaoCtrl subOrgaoCtrl = new SubOrgaoCtrl(getDaoFactory());
Collection subOrgaoList = new TreeSet(ordem);
/* Se funcionário é administrador ou tem nivel de acesso ao órgão */
if (gestor.getPerfil().equals(Perfil.ADMINISTRADOR)
|| gestor.getListaSubOrgaosAtivos() == null
|| gestor.getListaSubOrgaosAtivos().isEmpty())
subOrgaoList.addAll(subOrgaoCtrl.list(getOrgao(request)));
else {
subOrgaoList.addAll(gestor.getListaSubOrgaosAtivos());
}
/* Lista de Perfis */
Collection perfilList = new TreeSet(ordem);
perfilList.addAll(perfilCtrl.list());
if (!gestor.getPerfil().equals(Perfil.ADMINISTRADOR)) {
perfilList.remove(Perfil.ADMINISTRADOR);
}