/*
   * (non-Javadoc)
   *
   * @see
   * br.com.unimedjp.core.modelo.service.CrudServiceImpl#incluir(br.com.unimedjp
   * .core.modelo.entity.UnimedEntity)
   */
  public Serializable incluir(Funcionario func) throws SystemException {

    boolean existe =
        funcionarioDAO.carregarFuncionario(func.getMatricula(), func.getTipoFunc()) != null;

    if (existe)
      throw new SystemException(
          SiprosErros.ERRO_MATRICULA_JA_EXISTENTE_PARA_FUNCIONARIO, "MatrĂ­cula", "TipoFuncionario");

    // valida CPF
    boolean existeCpf = funcionarioDAO.validaExistenciaCPF(func.getCpf());

    if (existeCpf)
      throw new SystemException(SiprosErros.ERRO_JA_EXISTE_UM_CPF_CADASTRADO, func.getCpf());

    return funcionarioDAO.incluir(func);
  }
  /*
   * public void alterar(T objeto) throws SystemException {
   */
  public void alterar(Funcionario func) throws SystemException {

    Funcionario funcExiste =
        funcionarioDAO.carregarFuncionario(func.getMatricula(), func.getTipoFunc());

    boolean existe = funcExiste != null;

    if (existe && !funcExiste.equals(func)) {
      throw new SystemException(
          SiprosErros.ERRO_MATRICULA_JA_EXISTENTE_PARA_FUNCIONARIO, "MatrĂ­cula", "TipoFuncionario");
    }

    // valida CPF
    boolean existeCpf = funcionarioDAO.validaExistenciaCPF(func.getCpf());

    if (existeCpf && !funcExiste.equals(func)) {
      throw new SystemException(SiprosErros.ERRO_JA_EXISTE_UM_CPF_CADASTRADO, func.getCpf());
    }

    funcionarioDAO.alterar(func);
  }