Skip to content

Commit

Permalink
Adicionando uma série de exceções.
Browse files Browse the repository at this point in the history
  • Loading branch information
victor-torres committed Feb 6, 2016
1 parent d237933 commit 9372588
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
3 changes: 3 additions & 0 deletions open_cnl/open_cnl.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,14 @@ def _buscar_localidade(self, prefixo, sufixo):

return localidade


class LocalidadeNaoEncontrada(Exception):
pass


class ErroAoLerDoBancoDeDados(Exception):
pass


class ErroAoConectarComBancoDeDados(Exception):
pass
74 changes: 67 additions & 7 deletions open_cnl/open_cnl_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,31 @@ def importar_base(self):
"""
Lê o arquivo da base e guarda no banco de dados SQLite3.
"""
self.criar_banco_de_dados()
arquivo_zip = self.baixar_base_atualizada()
arquivo_txt = self.extrair_base_do_arquivo_zip(arquivo_zip)
try:
self.criar_banco_de_dados()
except Exception:
raise ErroAoCriarBancoDeDados

try:
arquivo_zip = self.baixar_base_atualizada()
except Exception:
raise ErroAoBaixarBaseDaANATEL

try:
arquivo_txt = self.extrair_base_do_arquivo_zip(arquivo_zip)
except Exception:
raise ErroAoExtrairBaseDaANATEL

for linha in arquivo_txt.readlines():
linha_processada = self.processar_linha(linha)
self.gravar_linha_no_banco(linha_processada)
try:
linha_processada = self.processar_linha(linha)
except Exception:
raise ErroAoProcessarBaseDaANATEL

try:
self.gravar_linha_no_banco(linha_processada)
except Exception:
raise ErroAoInserirDadosNoBanco

self.fecha_conexao_com_o_banco()

Expand Down Expand Up @@ -153,6 +172,47 @@ def processar_coordenada(self, coordenada):
# FIXME: Transformar em graus com os dados recebidos.
return coordenada[:6]


class ErroAoCriarBancoDeDados(Exception):
pass


class ErroAoBaixarBaseDaANATEL(Exception):
pass


class ErroAoExtrairBaseDaANATEL(Exception):
pass


class ErroAoProcessarBaseDaANATEL(Exception):
pass


class ErroAoInserirDadosNoBanco(Exception):
pass


if __name__ == "__main__":
open_cnl_importer = OpenCNLImporter(sys.argv[1])
open_cnl_importer.importar_base()
if not len(sys.argv) == 2:
print('Utilização: open_cnl_importer <destino.sqlite3>')
return

arquivo_de_destino = sys.argv[1]
if os.path.exists(arquivo_de_destino):
print('Arquivo de destino já existe: %s' % arquivo_de_destino)
return

open_cnl_importer = OpenCNLImporter(arquivo_de_destino)
try:
open_cnl_importer.importar_base()
except ErroAoCriarBancoDeDados:
print('Erro ao criar o banco de dados')
except ErroAoBaixarBaseDaANATEL:
print('Erro ao baixar a base da ANATEL')
except ErroAoExtrairBaseDaANATEL:
print('Erro ao extrair a base da ANATEL')
except ErroAoProcessarBaseDaANATEL:
print('Erro ao processar a base da ANATEL')
except ErroAoInserirDadosNoBanco:
print('Erro ao inserir dados no banco')

0 comments on commit 9372588

Please sign in to comment.