-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfileListener.js
126 lines (81 loc) · 2.33 KB
/
fileListener.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
(function(){
require('./dbcon')(function(){
startFile();
});
})();
function setImportStatusOK(collection){
var mongoose = require('mongoose');
var CollectionStatus = mongoose.model('CollectionStatus');
var cs = new CollectionStatus({
collectionName: collection
});
cs.save(function(err){
if(err){
console.log("erro ao salvar status de importação de "+collection+" para mongo");
console.log(err);
}
else{
console.log("sucesso ao salvar status de importação de "+collection+" para mongo");
}
});
}
function startFile(){
var fs = require('fs');
var vEnqueuer = require('venqueuer');
var venqueuer = new vEnqueuer();
var fileManager = new FileManager();
fileManager.addListener('./cache/extracao/politicos.json', function(){
console.log("politicos.json esta pronto");
//enviar para o mongo
require('./mongoImporter')('./cache/extracao/politicos.json', 'politicos', function(){
console.log("terminou de importar politicos para o mongodb");
//salvar status de importado no mongodb
setImportStatusOK("politicos");
});
});
fileManager.addListener('./cache/extracao/doadores.json', function(){
console.log("doadores.json esta pronto");
require('./mongoImporter')('./cache/extracao/doadores.json', 'doadores', function(){
console.log("terminou de importar doadores para o mongodb");
//salvar status de importado no mongodb
setImportStatusOK("doadores");
});
});
fileManager.waitFiles();
function FileManager(){
var fileIsUp = (function(filePath){
this[filePath] = true;
}).bind(this);
venqueuer.createQueue("check", function(){
console.log("todos os arquivos estão prontos");
});
this.addListener = function(filePath, callback){
this[filePath] = false;
enqueue(filePath, callback);
};
this.waitFiles = function(){
venqueuer.trigger("check");
};
function enqueue(filePath, callback){
venqueuer.enqueue("check", checkFile, {
file: filePath,
callback:function(){
fileIsUp(filePath);
console.log(filePath + " está pronto");
callback();
}
});
}
}
function checkFile(file, callback){
if( !fs.existsSync(file) ){
console.log("arquivo " + file + " nao existe, esperar 10 segundos");
setTimeout(function(){
checkFile(file, callback);
}, 10000);
}
else{
callback();
}
}
}