/**
  * Populates the collection of business objects from raw data
  *
  * @return bool
  * @param MySqlRawData $o_result
  */
 protected function BuildItems(MySqlRawData $o_result)
 {
     # use CollectionBuilder to handle duplicates
     $o_ground_builder = new CollectionBuilder();
     $o_ground = null;
     while ($row = $o_result->fetch()) {
         # check whether this is a new ground
         if (!$o_ground_builder->IsDone($row->ground_id)) {
             # store any exisiting ground
             if ($o_ground != null) {
                 $this->Add($o_ground);
             }
             # create the new ground
             $o_ground = new Ground($this->o_settings);
             $o_ground->SetId($row->ground_id);
             $o_ground->SetDirections($row->directions);
             $o_ground->SetParking($row->parking);
             $o_ground->SetFacilities($row->facilities);
             $o_ground->SetShortUrl($row->short_url);
             $o_ground->SetDateUpdated($row->date_changed);
             if (isset($row->update_search) and $row->update_search == 1) {
                 $o_ground->SetSearchUpdateRequired();
             }
             $o_address = $o_ground->GetAddress();
             $o_address->SetSaon($row->saon);
             $o_address->SetPaon($row->paon);
             $o_address->SetStreetDescriptor($row->street_descriptor);
             $o_address->SetLocality($row->locality);
             $o_address->SetTown($row->town);
             $o_address->SetAdministrativeArea($row->administrative_area);
             $o_address->SetPostcode($row->postcode);
             if (isset($row->latitude)) {
                 $o_address->SetGeoLocation($row->latitude, $row->longitude, $row->geo_precision);
             }
             $o_ground->SetAddress($o_address);
         }
         if (isset($row->team_name)) {
             $team = new Team($this->GetSettings());
             $team->SetName($row->team_name);
             $team->SetShortUrl($row->team_short_url);
             $team->SetPlayerType($row->player_type_id);
             $o_ground->Teams()->Add($team);
         }
     }
     # store final ground
     if ($o_ground != null) {
         $this->Add($o_ground);
     }
 }