Situatie: ben nog steeds bezig met het schrijven van een vastgoed website in 3 tiers gebruikmakend van een Domain model samen met een datamapper.
Omdat mijn gronden overerven van vastgoed, en mijn huizen ook van vastgoed heb ik een speciaal soort mapper moeten gebruiken namelijk Class table inheritance (Fowler).
load werkt al
update nog niet
Ik zit nu met de volgende klassen
-AbstractMapper
-VastgoedMapper
-AbstractVastgoedMapper
-Huismapper.
voor een update:
Het probleem:
'mybase.update(aDomainObject) >> hij gaat deze methode dan wel runnen in de class AbstractVastgoedMapper maar de methode die hij aanroept(mapOr) runt hij terug in de huismapper(zodat hij twee keer die mapor van huismapper oproept terwijl ik wil dat hij de eerste keer het huist mapt, en daarna het vastgoed (dus in mybase).
Ik hoop dat ik het probleem genoeg heb verduidelijkt.
Ik heb mij reeds een week bezig meegehouden, gistre de code afgeprint, eens rustig gelezen, wat zitten spelen met de UML maar ik kom er niet uit.
Omdat mijn gronden overerven van vastgoed, en mijn huizen ook van vastgoed heb ik een speciaal soort mapper moeten gebruiken namelijk Class table inheritance (Fowler).
load werkt al
update nog niet
Ik zit nu met de volgende klassen
-AbstractMapper
-VastgoedMapper
-AbstractVastgoedMapper
-Huismapper.
voor een update:
Visual Basic .NET:
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
| Class Vastgoedmapper... public overrides sub update(aDomainObject as Domainobject) dim id as integer= aDomainObject.getId if typeOf aDomainObject is huis then huismapper.create.callUpdate (adomainobject) if typeOf aDomainObject is Grond then Grondmapper.create.callUpdate(aDomainObject) end sub end class 'nu komt het probleem :-) Class Huismapper public function callUpdate(aDomainObject as Domainobject) 'Deze methode roept de abstractMapper.update methode op update(aDomainobject) 'deze methode roept de abstractMapper.update methode op, uitgevoerd in de klasse AbstractVastgoedMapper mybase.update(aDomainObject) 'hier loopt het dus mis. 'eerst nog een code fragment van mijn update function end class class AbstractMapper public overrdable Sub update(aDomainObject as Domainobject) dim id as integer = aDomainObject.getId mapOr(aDomainObject) Da.id = new sqlint32(id) da.update() loadedMap(id) =aDomainObject) end sub end class 'voorbeeld van de methode mapOr die geimplementeerd is zowel in klasse AbstractVastgoedMapper als in Huismapper public sub mapOr dim aDalVastgoed as new dalVastgoed() dim aVastgoed as new vastgoed avastgoed.bla = aDalvastgoed.bla ..... DA = adalVastgoed 'DA = waar mijn Dal wordt in gestockeerd, dit werkt perfect, don't worry end sub |
Het probleem:
'mybase.update(aDomainObject) >> hij gaat deze methode dan wel runnen in de class AbstractVastgoedMapper maar de methode die hij aanroept(mapOr) runt hij terug in de huismapper(zodat hij twee keer die mapor van huismapper oproept terwijl ik wil dat hij de eerste keer het huist mapt, en daarna het vastgoed (dus in mybase).
Ik hoop dat ik het probleem genoeg heb verduidelijkt.
Ik heb mij reeds een week bezig meegehouden, gistre de code afgeprint, eens rustig gelezen, wat zitten spelen met de UML maar ik kom er niet uit.