25 |
#include "OneFamilyLinkHandler.hh" |
#include "OneFamilyLinkHandler.hh" |
26 |
#include "OneSpouseToFamilyLinkHandler.hh" |
#include "OneSpouseToFamilyLinkHandler.hh" |
27 |
#include "OneSpouseToFamilyLink.hh" |
#include "OneSpouseToFamilyLink.hh" |
28 |
|
#include "GEDCOMParser/Predicates/GenericPredicateIndividualRecords.hh" |
29 |
|
#include "GEDCOMParser/Predicates/PredicateIndividualRecords.hh" |
30 |
|
#include "GEDCOMParser/Predicates/IsMale.hh" |
31 |
|
|
32 |
BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) : |
BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) : |
33 |
_mmi_spousetofamilylink(mmi) |
_mmi_spousetofamilylink(mmi) |
115 |
if (tmp != 0) |
if (tmp != 0) |
116 |
{ |
{ |
117 |
OneSpouseToFamilyLink * mmi_one_family_link = static_cast < OneSpouseToFamilyLink * >(tmp); |
OneSpouseToFamilyLink * mmi_one_family_link = static_cast < OneSpouseToFamilyLink * >(tmp); |
118 |
date_new_value = mmi_one_family_link->getUnionDate(); |
if (mmi_one_family_link != 0) |
|
place_new_value = mmi_one_family_link->getUnionPlace(); |
|
|
|
|
|
GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks(); |
|
|
SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link = family_links[family_index]; |
|
|
GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords(); |
|
|
SmartPtr < GEDCOMParser::FamilyRecord > family = families[family_link->getFamsXref()]; |
|
|
bool mariage_event_exists = false; |
|
|
bool mariage_event_detail_exists = false; |
|
|
bool mariage_event_detail_place_exists = false; |
|
|
if (family->getMarriageEvent() != 0) |
|
119 |
{ |
{ |
120 |
mariage_event_exists = true; |
date_new_value = mmi_one_family_link->getUnionDate(); |
121 |
SmartPtr < GEDCOMParser::Event > event = family->getMarriageEvent()->getEvent(); |
place_new_value = mmi_one_family_link->getUnionPlace(); |
122 |
if (!event.Null()) |
GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks(); |
123 |
|
SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link; |
124 |
|
if (family_links.size() > 0) |
125 |
|
{ |
126 |
|
family_link = family_links[family_index]; |
127 |
|
} |
128 |
|
GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords(); |
129 |
|
SmartPtr < GEDCOMParser::FamilyRecord > family; |
130 |
|
if (!family_link.Null()) |
131 |
|
{ |
132 |
|
family = families[family_link->getFamsXref()]; |
133 |
|
} |
134 |
|
bool mariage_event_exists = false; |
135 |
|
bool mariage_event_detail_exists = false; |
136 |
|
bool mariage_event_detail_place_exists = false; |
137 |
|
if (!family.Null()) |
138 |
{ |
{ |
139 |
mariage_event_detail_exists = true; |
if (family->getMarriageEvent() != 0) |
|
date_old_value = event->getDate(); |
|
|
SmartPtr < GEDCOMParser::Place > place = event->getPlace(); |
|
|
if (!place.Null()) |
|
140 |
{ |
{ |
141 |
mariage_event_detail_place_exists = true; |
mariage_event_exists = true; |
142 |
place_old_value = place->getPlaceValue(); |
SmartPtr < GEDCOMParser::Event > event = family->getMarriageEvent()->getEvent(); |
143 |
|
if (!event.Null()) |
144 |
|
{ |
145 |
|
mariage_event_detail_exists = true; |
146 |
|
date_old_value = event->getDate(); |
147 |
|
SmartPtr < GEDCOMParser::Place > place = event->getPlace(); |
148 |
|
if (!place.Null()) |
149 |
|
{ |
150 |
|
mariage_event_detail_place_exists = true; |
151 |
|
place_old_value = place->getPlaceValue(); |
152 |
|
} |
153 |
|
} |
154 |
} |
} |
155 |
} |
if ((date_new_value != date_old_value) || (place_new_value != place_old_value)) |
|
} |
|
|
if ((date_new_value != date_old_value) || (place_new_value != place_old_value)) |
|
|
{ |
|
|
GEDCOMParser::FamilyEvent * mariage_event = 0; |
|
|
GEDCOMParser::Event * mariage_event_detail = 0; |
|
|
GEDCOMParser::Place * mariage_event_detail_place = 0; |
|
|
if (! mariage_event_exists) |
|
|
{ |
|
|
mariage_event = family->addFamilyEvent(); |
|
|
mariage_event->setType(GEDCOMParser::FamilyEvent::e_Marr); |
|
|
} |
|
|
else |
|
|
{ |
|
|
mariage_event = family->getMarriageEvent(); |
|
|
} |
|
|
if (! mariage_event_detail_exists) |
|
|
{ |
|
|
mariage_event_detail = mariage_event->setEvent(); |
|
|
} |
|
|
else |
|
|
{ |
|
|
mariage_event_detail = mariage_event->getEvent().getPtr(); |
|
|
} |
|
|
if (date_old_value != date_new_value) |
|
|
{ |
|
|
mariage_event_detail->setDate(date_new_value); |
|
|
} |
|
|
if (place_old_value != place_new_value) |
|
|
{ |
|
|
if (! mariage_event_detail_place_exists) |
|
|
{ |
|
|
mariage_event_detail_place = mariage_event_detail->setPlace(); |
|
|
} |
|
|
else |
|
156 |
{ |
{ |
157 |
mariage_event_detail_place = mariage_event_detail->getPlace().getPtr(); |
GEDCOMParser::FamilyEvent * mariage_event = 0; |
158 |
|
GEDCOMParser::Event * mariage_event_detail = 0; |
159 |
|
GEDCOMParser::Place * mariage_event_detail_place = 0; |
160 |
|
if (! mariage_event_exists) |
161 |
|
{ |
162 |
|
mariage_event = family->addFamilyEvent(); |
163 |
|
mariage_event->setType(GEDCOMParser::FamilyEvent::e_Marr); |
164 |
|
} |
165 |
|
else |
166 |
|
{ |
167 |
|
mariage_event = family->getMarriageEvent(); |
168 |
|
} |
169 |
|
if (! mariage_event_detail_exists) |
170 |
|
{ |
171 |
|
mariage_event_detail = mariage_event->setEvent(); |
172 |
|
} |
173 |
|
else |
174 |
|
{ |
175 |
|
mariage_event_detail = mariage_event->getEvent().getPtr(); |
176 |
|
} |
177 |
|
if (date_old_value != date_new_value) |
178 |
|
{ |
179 |
|
mariage_event_detail->setDate(date_new_value); |
180 |
|
} |
181 |
|
if (place_old_value != place_new_value) |
182 |
|
{ |
183 |
|
if (! mariage_event_detail_place_exists) |
184 |
|
{ |
185 |
|
mariage_event_detail_place = mariage_event_detail->setPlace(); |
186 |
|
} |
187 |
|
else |
188 |
|
{ |
189 |
|
mariage_event_detail_place = mariage_event_detail->getPlace().getPtr(); |
190 |
|
} |
191 |
|
mariage_event_detail_place->setPlaceValue(place_new_value); |
192 |
|
} |
193 |
} |
} |
|
mariage_event_detail_place->setPlaceValue(place_new_value); |
|
194 |
} |
} |
195 |
} |
} |
196 |
} |
} |
257 |
std::string * individu_id = new std::string(_parent_entity->getId()); |
std::string * individu_id = new std::string(_parent_entity->getId()); |
258 |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id); |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id); |
259 |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id); |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id); |
260 |
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(individu_id); |
|
261 |
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(individu_id); |
GEDCOMParser::LineageLinkageGedcom const * const lineage = get_document(); |
262 |
|
SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > * husband_predicate = new SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords >(new GEDCOMParser::Predicates::IsMale()); |
263 |
|
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate); |
264 |
|
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate); |
265 |
|
|
266 |
std::vector<std::string> children; |
std::vector<std::string> children; |
267 |
std::vector < OneFamilyLinkHandler::NavigationSlotHandler_t * > navigation_slots_children; |
std::vector < OneFamilyLinkHandler::NavigationSlotHandler_t * > navigation_slots_children; |