forked from osm-fr/osmose-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Analyser_Merge_Dynamic.py
73 lines (58 loc) · 3.38 KB
/
Analyser_Merge_Dynamic.py
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
#!/usr/bin/env python
#-*- coding: utf-8 -*-
###########################################################################
## ##
## Copyrights Frédéric Rodrigo 2014 ##
## ##
## This program is free software: you can redistribute it and/or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation, either version 3 of the License, or ##
## (at your option) any later version. ##
## ##
## This program is distributed in the hope that it will be useful, ##
## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##
## GNU General Public License for more details. ##
## ##
## You should have received a copy of the GNU General Public License ##
## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
## ##
###########################################################################
from .Analyser import Analyser
from .Analyser_Merge import Analyser_Merge_Point, Source, Load_XY, Mapping
from modules.Stablehash import hexastablehash
class Analyser_Merge_Dynamic(Analyser):
def classFactory(self, classs, subclass_name, *args):
def __init__(self, config, error_file, logger = None):
classs.__init__(self, config, error_file, logger, *args)
generatedClass = type("{0}_{1}".format(classs.__name__, subclass_name), (classs,), {"__init__": __init__})
self.analysers.append(generatedClass)
def __init__(self, config, logger = None):
Analyser.__init__(self, config, logger)
self.analysers = []
def analyser(self):
for obj in self.analysers:
with obj(self.config, self.error_file, self.logger) as analyser_obj:
# if not options.change or not xml_change:
analyser_obj.analyser()
# else:
# analyser_obj.analyser_change()
def timestamp(self):
if self.analysers:
with self.analysers[0](self.config, self.error_file, self.logger) as analyser_obj:
return analyser_obj.timestamp()
class SubAnalyser_Merge_Dynamic(Analyser_Merge_Point):
def __init__(self, config, error_file, logger):
Analyser_Merge_Point.__init__(self, config, logger)
self.error_file = error_file
def init(self, url, name, source = Source(), load = Load_XY(), mapping = Mapping()):
if not load.table_name: # Rename all table of sub analysers the same
load.table_name = self.__class__.__name__.lower()[18:]
load.table_name = '_'.join(load.table_name.split('_')[:-1])
country_hash = self.config.db_schema.split('_')[-1][0:10] + hexastablehash(self.config.db_schema)[-4:]
load.table_name = country_hash + '_' + load.table_name
Analyser_Merge_Point.init(self, url, name, source, load, mapping)
def open_error_file(self):
pass
def close_error_file(self):
pass