-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathleituraEc.c
71 lines (58 loc) · 2.31 KB
/
leituraEc.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "leituraEc.h"
#include "quadTree.h"
#include "doublyLinkedList.h"
#include "hashTable.h"
#include "estabelecimento.h"
#include "processaGeo.h"
#include "quadra.h"
/*
CHAVE X VALOR
HASHTABLE 0 cpf X endereço:
HASHTABLE 1 tipo-estabelecimento-comercial X descrição:
HASHTABLE 2 dados de uma pessoa: dado um cpf, retorna os dados pessoais daquela pessoa
HASHTABLE 3 cep X quadra:
*/
enum LISTAS{CIRCULO, RETANGULO, TEXTO, QUADRA, HIDRANTE, SEMAFORO, RADIOBASE, POSTOSAUDE, LINHA, LOCALCASOS, POLIGONO, ESTABELECIMENTO, ENDERECOS};
enum HASHTABLE{CPF_ENDERECO, TIPO_DESCRICAO, CPF_DADOS, CEP_QUADRA};
void readEc(QuadTree* qt, HashTable* ht, char* dirEc){
DoublyLinkedList listaEstabelecimentos = create();
FILE* fileEc = NULL;
fileEc = fopen(dirEc, "r");
if(!fileEc){
exit(1);
}
printf("\nArquivo EC aberto com sucesso!");
//Parametros
char comando[200], codt[300], descricao[300], cnpj[300], cpf[300], cep[200], face, nome[300];
int num;
while(1){
fscanf(fileEc, "%s", comando);
if(feof(fileEc)){
break;
}
else if(strcmp(comando, "t") == 0){
fscanf(fileEc, "%s %s", codt, descricao);
char* chave = (char*)malloc(sizeof(char) * (strlen(codt) + 1));
char* valor = (char*)malloc(sizeof(char) * (strlen(descricao) + 1));
strcpy(chave, codt);
strcpy(valor, descricao);
insertValueHashTable(ht[TIPO_DESCRICAO], chave, valor);
}
else if(strcmp(comando, "e") == 0){
fscanf(fileEc, "%s %s %s %s %c %d %s", cnpj, cpf, codt, cep, &face, &num, nome);
Quadra quadra = getInfoByIdQt(qt[QUADRA], cep);
if(quadra == NULL){
removeList(listaEstabelecimentos, 0);
return;
}
Estabelecimento estabelecimento = criaEstabelecimento(quadra, cnpj, cpf, nome, codt, face, num);
insert(listaEstabelecimentos, estabelecimento);
}
}
qt[ESTABELECIMENTO] = criaQt(estabelecimentoGetCnpj);
DoublyLinkedListToQuadTree(listaEstabelecimentos, qt[ESTABELECIMENTO], estabelecimentoGetPoint, estabelecimentoSwap);
fclose(fileEc);
}