-
Notifications
You must be signed in to change notification settings - Fork 0
/
EventProcessorFactory.py
179 lines (171 loc) · 11.3 KB
/
EventProcessorFactory.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
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
from EMInfraImporter import EMInfraImporter
from EventProcessors.AgentProcessors.AgentOvocodeGewijzigdProcessor import AgentOvocodeGewijzigdProcessor
from EventProcessors.AssetProcessors.ActiefGewijzigdProcessor import ActiefGewijzigdProcessor
from EventProcessors.AgentProcessors.AgentActiefGewijzigdProcessor import AgentActiefGewijzigdProcessor
from EventProcessors.AgentProcessors.AgentContactInfoGewijzigdProcessor import AgentContactInfoGewijzigdProcessor
from EventProcessors.AgentProcessors.AgentNaamGewijzigdProcessor import AgentNaamGewijzigdProcessor
from EventProcessors.AgentProcessors.AgentVOIDGewijzigdProcessor import AgentVOIDGewijzigdProcessor
from EventProcessors.AgentProcessors.NieuwAgentProcessor import NieuwAgentProcessor
from EventProcessors.AssetProcessors.VplanGewijzigdProcessor import VplanGewijzigdProcessor
from EventProcessors.AssetProcessors.WeglocatieGewijzigdProcessor import WeglocatieGewijzigdProcessor
from EventProcessors.AssetrelatieProcessors.AssetrelatieEigenschappenGewijzigdProcessor import \
AssetrelatieEigenschappenGewijzigdProcessor
from EventProcessors.AssetrelatieProcessors.AssetrelatieVerwijderdOngedaanProcessor import \
AssetrelatieVerwijderdOngedaanProcessor
from EventProcessors.AssetrelatieProcessors.AssetrelatieVerwijderdProcessor import AssetrelatieVerwijderdProcessor
from EventProcessors.AssetrelatieProcessors.NieuwAssetrelatieProcessor import NieuwAssetrelatieProcessor
from EventProcessors.AssetProcessors.AttributenGewijzigdProcessor import AttributenGewijzigdProcessor
from EventProcessors.AssetProcessors.BestekGewijzigdProcessor import BestekGewijzigdProcessor
from EventProcessors.BetrokkenerelatieProcessors.BetrokkenerelatieContactInfoGewijzigdProcessor import \
BetrokkenerelatieContactInfoGewijzigdProcessor
from EventProcessors.BetrokkenerelatieProcessors.BetrokkenerelatieGeldigheidGewijzigdProcessor import \
BetrokkenerelatieGeldigheidGewijzigdProcessor
from EventProcessors.BetrokkenerelatieProcessors.BetrokkenerelatieRolGewijzigdProcessor import \
BetrokkenerelatieRolGewijzigdProcessor
from EventProcessors.BetrokkenerelatieProcessors.BetrokkenerelatieVerwijderdOngedaanProcessor import \
BetrokkenerelatieVerwijderdOngedaanProcessor
from EventProcessors.BetrokkenerelatieProcessors.BetrokkenerelatieVerwijderdProcessor import \
BetrokkenerelatieVerwijderdProcessor
from EventProcessors.BetrokkenerelatieProcessors.NieuwBetrokkenerelatieProcessor import NieuwBetrokkenerelatieProcessor
from EventProcessors.AssetProcessors.CommentaarGewijzigdProcessor import CommentaarGewijzigdProcessor
from EventProcessors.AssetProcessors.ElekAansluitingGewijzigdProcessor import ElekAansluitingGewijzigdProcessor
from EventProcessors.AssetProcessors.GeometrieOrLocatieGewijzigdProcessor import GeometrieOrLocatieGewijzigdProcessor
from EventProcessors.AssetProcessors.NaamGewijzigdProcessor import NaamGewijzigdProcessor
from EventProcessors.AssetProcessors.NieuwAssetProcessor import NieuwAssetProcessor
from EventProcessors.AssetProcessors.SchadebeheerderGewijzigdProcessor import SchadebeheerderGewijzigdProcessor
from EventProcessors.AssetProcessors.SpecificEventProcessor import SpecificEventProcessor
from EventProcessors.AssetProcessors.ToestandGewijzigdProcessor import ToestandGewijzigdProcessor
from EventProcessors.AssetProcessors.ToezichtGewijzigdProcessor import ToezichtGewijzigdProcessor
from EventProcessors.ControleficheProcessors.NieuwControleficheProcessor import NieuwControleficheProcessor
from PostGISConnector import PostGISConnector
class EventProcessorFactory:
@classmethod
def create_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter,
postgis_connector: PostGISConnector, resource: str) -> SpecificEventProcessor:
if resource == 'agents':
return EventProcessorFactory.create_agent_event_processor(event_type=event_type,
eminfra_importer=eminfra_importer)
elif resource == 'betrokkenerelaties':
return EventProcessorFactory.create_betrokkene_relatie_event_processor(
event_type=event_type, eminfra_importer=eminfra_importer)
elif resource == 'assetrelaties':
return EventProcessorFactory.create_assetrelatie_event_processor(
event_type=event_type, eminfra_importer=eminfra_importer)
elif resource == 'assets':
return EventProcessorFactory.create_asset_event_processor(
event_type=event_type, eminfra_importer=eminfra_importer)
elif resource == 'controlefiches':
return EventProcessorFactory.create_controlefiche_event_processor(
event_type=event_type, eminfra_importer=eminfra_importer)
raise NotImplementedError
@classmethod
def create_asset_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter) -> SpecificEventProcessor:
if event_type == 'NIEUWE_INSTALLATIE':
return NieuwAssetProcessor(eminfra_importer)
elif event_type == 'NIEUW_ONDERDEEL':
return NieuwAssetProcessor(eminfra_importer)
elif event_type == 'NIEUWE_CONTROLEFICHE':
return NieuwAssetProcessor(eminfra_importer)
elif event_type == 'NIEUWE_BEHEERACTIE':
return NieuwAssetProcessor(eminfra_importer)
elif event_type == 'ACTIEF_GEWIJZIGD':
return ActiefGewijzigdProcessor(eminfra_importer)
elif event_type == 'BESTEK_GEWIJZIGD':
return BestekGewijzigdProcessor(eminfra_importer)
elif event_type == 'BETROKKENE_RELATIES_GEWIJZIGD':
pass # using different feed instead
elif event_type == 'BETROKKENE_RELATIES_EIGENSCHAPPEN_GEWIJZIGD':
pass # using different feed instead
elif event_type == 'COMMENTAAR_GEWIJZIGD':
return CommentaarGewijzigdProcessor(eminfra_importer)
elif event_type == 'COMMUNICATIEAANSLUITING_GEWIJZIGD':
pass
elif event_type == 'DOCUMENTEN_GEWIJZIGD':
pass
elif event_type == 'EIGENSCHAPPEN_GEWIJZIGD':
return AttributenGewijzigdProcessor(eminfra_importer)
elif event_type == 'ELEKTRICITEITSAANSLUITING_GEWIJZIGD':
return ElekAansluitingGewijzigdProcessor(eminfra_importer)
elif event_type == 'GEOMETRIE_GEWIJZIGD' or event_type == 'LOCATIE_GEWIJZIGD':
return GeometrieOrLocatieGewijzigdProcessor(eminfra_importer)
elif event_type == 'NAAM_GEWIJZIGD' or event_type == 'NAAMPAD_GEWIJZIGD' or event_type == 'PARENT_GEWIJZIGD':
return NaamGewijzigdProcessor(eminfra_importer)
elif event_type == 'POSTIT_GEWIJZIGD':
pass
elif event_type == 'RELATIES_GEWIJZIGD':
pass # using different feed instead
elif event_type == 'RELATIES_EIGENSCHAPPEN_GEWIJZIGD':
pass # using different feed instead
elif event_type == 'SCHADEBEHEERDER_GEWIJZIGD':
return SchadebeheerderGewijzigdProcessor(eminfra_importer)
elif event_type == 'TOEGANG_GEWIJZIGD':
pass
elif event_type == 'TOESTAND_GEWIJZIGD':
return ToestandGewijzigdProcessor(eminfra_importer)
elif event_type == 'TOEZICHT_GEWIJZIGD':
return ToezichtGewijzigdProcessor(eminfra_importer)
elif event_type == 'VPLAN_GEWIJZIGD':
return VplanGewijzigdProcessor(eminfra_importer)
elif event_type == 'WEGLOCATIE_GEWIJZIGD':
return WeglocatieGewijzigdProcessor(eminfra_importer)
else:
raise NotImplementedError(f"can't create an asset event processor with type: {event_type}")
@classmethod
def create_agent_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter) -> SpecificEventProcessor:
if event_type == 'NIEUWE_AGENT':
return NieuwAgentProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'NAAM_GEWIJZIGD':
return AgentNaamGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'VO_ID_GEWIJZIGD':
return AgentVOIDGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'CONTACT_INFO_GEWIJZIGD':
return AgentContactInfoGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'ACTIEF_GEWIJZIGD':
return AgentActiefGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'OVO_CODE_GEWIJZIGD':
return AgentOvocodeGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'BETROKKENE_RELATIES_GEWIJZIGD':
pass # using different feed instead
elif event_type == 'BETROKKENE_RELATIES_EIGENSCHAPPEN_GEWIJZIGD':
pass # using different feed instead
else:
raise NotImplementedError(f"can't create an agent event processor with type: {event_type}")
@classmethod
def create_betrokkene_relatie_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter) -> \
SpecificEventProcessor:
if event_type == 'NIEUWE_RELATIE':
return NieuwBetrokkenerelatieProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'RELATIE_VERWIJDERD_ONGEDAAN':
return BetrokkenerelatieVerwijderdOngedaanProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'RELATIE_VERWIJDERD':
return BetrokkenerelatieVerwijderdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'ROL_GEWIJZIGD':
return BetrokkenerelatieRolGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'CONTACT_INFO_GEWIJZIGD':
return BetrokkenerelatieContactInfoGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'GELDIGHEID_GEWIJZIGD':
return BetrokkenerelatieGeldigheidGewijzigdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'REDEN_GEWIJZIGD':
pass # this event only adds info about why the relation was made
else:
raise NotImplementedError(f"can't create a betrokkenerelatie event processor with type: {event_type}")
@classmethod
def create_assetrelatie_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter) -> \
SpecificEventProcessor:
if event_type == 'NIEUWE_RELATIE':
return NieuwAssetrelatieProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'RELATIE_VERWIJDERD_ONGEDAAN':
return AssetrelatieVerwijderdOngedaanProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'RELATIE_VERWIJDERD':
return AssetrelatieVerwijderdProcessor(eminfra_importer=eminfra_importer)
elif event_type == 'EIGENSCHAPPEN_GEWIJZIGD':
return AssetrelatieEigenschappenGewijzigdProcessor(eminfra_importer=eminfra_importer)
else:
raise NotImplementedError(f"can't create an betrokkenerelatie event processor with type: {event_type}")
@classmethod
def create_controlefiche_event_processor(cls, event_type: str, eminfra_importer: EMInfraImporter
) -> SpecificEventProcessor:
if event_type == 'NIEUWE_CONTROLEFICHE':
return NieuwControleficheProcessor(eminfra_importer)
else:
raise NotImplementedError(f"can't create an asset event processor with type: {event_type}")