/**
  * Helper to build season and competition for a match from raw data
  *
  * @param Match $o_match
  * @param DataRow $o_row
  * @param CollectionBuilder $season_builder
  */
 private function BuildSeason(Match $o_match, $o_row, $season_builder = null)
 {
     if (isset($o_row->season_id) and (is_null($season_builder) or !$season_builder->IsDone($o_row->season_id))) {
         $o_season = $o_match->Seasons()->GetItemByProperty('GetId', (int) $o_row->season_id);
         $b_existing_season = is_object($o_season);
         if (!$b_existing_season) {
             $o_season = new Season($this->GetSettings());
         }
         $o_season->SetId($o_row->season_id);
         if (isset($o_row->season_name)) {
             $o_season->SetName($o_row->season_name);
         }
         if (isset($o_row->season_short_url)) {
             $o_season->SetShortUrl($o_row->season_short_url);
         }
         if (isset($o_row->start_year)) {
             $o_season->SetStartYear($o_row->start_year);
         }
         if (isset($o_row->end_year)) {
             $o_season->SetEndYear($o_row->end_year);
         }
         $o_comp = new Competition($this->GetSettings());
         if (isset($o_row->competition_id)) {
             $o_comp->SetId($o_row->competition_id);
         }
         if (isset($o_row->competition_name)) {
             $o_comp->SetName($o_row->competition_name);
         }
         if (isset($o_row->notification_email)) {
             $o_comp->SetNotificationEmail($o_row->notification_email);
         }
         $o_comp->Add($o_season);
         if (!$b_existing_season) {
             $o_match->Seasons()->Add($o_season);
         }
     }
 }