#include "BakeryGateway/ViewIndividualEvents.hh" BakeryGateway::ViewIndividualEvents::ViewIndividualEvents(MMIIndividualEvents * mmi) : _mmi_individual_events(mmi) { return; } BakeryGateway::ViewIndividualEvents::~ViewIndividualEvents(void) { return; } void BakeryGateway::ViewIndividualEvents::load_from_document(void) { if (_parent_entity != 0) { delete_subscribed_views(); // handling of birth _mmi_individual_events->setBirthDate(""); _mmi_individual_events->setBirthPlace(""); _mmi_individual_events->MMIBirthNote->clear(); GEDCOMParser::IndividualEvents_t events = _parent_entity->getIndividualEvents(); GEDCOMParser::IndividualEvents_t::const_iterator iter = std::find(events.begin(), events.end(), GEDCOMParser::IndividualEvent::e_Birt); if (iter != events.end()) { if (!(*iter)->getEvent().Null()) { _mmi_individual_events->setBirthDate((*iter)->getEvent()->getDate()); if (!(*iter)->getEvent()->getPlace().Null()) _mmi_individual_events->setBirthPlace((*iter)->getEvent()->getPlace()->getPlaceValue()); Bakery::View * note_birth_view = _view_factory->createView(_mmi_individual_events->MMIBirthNote); subscribe_view(note_birth_view); BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * tmp = dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * > (note_birth_view); tmp->set_parent_entity((*iter)->getEvent().getPtr()); } } // handling of death _mmi_individual_events->setDeathDate(""); _mmi_individual_events->setDeathPlace(""); _mmi_individual_events->MMIDeathNote->clear(); iter = std::find(events.begin(), events.end(), GEDCOMParser::IndividualEvent::e_Deat); if (iter != events.end()) { if (!(*iter)->getEvent().Null()) { _mmi_individual_events->setDeathDate((*iter)->getEvent()->getDate()); if (!(*iter)->getEvent()->getPlace().Null()) _mmi_individual_events->setDeathPlace((*iter)->getEvent()->getPlace()->getPlaceValue()); Bakery::View * note_death_view = _view_factory->createView(_mmi_individual_events->MMIDeathNote); subscribe_view(note_death_view); BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * tmp = dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * > (note_death_view); tmp->set_parent_entity((*iter)->getEvent().getPtr()); } } // handling of events list _mmi_individual_events->clearEvents(); std::vector * event_row = 0; std::string type; for (iter = events.begin(); iter != events.end(); iter++) { event_row = new std::vector; type = (*iter)->getType(); event_row->push_back(type); if (!(*iter)->getEvent().Null()) { event_row->push_back((*iter)->getEvent()->getDate()); if (!(*iter)->getEvent()->getPlace().Null()) { event_row->push_back((*iter)->getEvent()->getPlace()->getPlaceValue()); } else { event_row->push_back(""); } } else { event_row->push_back(""); event_row->push_back(""); } _mmi_individual_events->addEvent(*event_row); delete event_row; event_row = 0; } } return; }