/*
 * This file is part of the Owl Positioning System (OwlPS) project.
 * It is subject to the copyright notice and license terms in the
 * COPYRIGHT.t2t file found in the top-level directory of this
 * distribution and at
 *   https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
 * No part of the OwlPS Project, including this file, may be copied,
 * modified, propagated, or distributed except according to the terms
 * contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
 * distributed along with this file, either separately or by replacing
 * this notice by the COPYRIGHT.t2t file's contents.
 */


#include "mobilesreadercsv.hh"
#include "point3d.hh"
#include "stock.hh"
#include "posexcept.hh"

using namespace std ;



/* *** Constructors *** */


MobilesReaderCSV::MobilesReaderCSV(const string &file_name):
  file(file_name)
{
  read_devices() ;
}



/* *** Operations *** */


void MobilesReaderCSV::read_devices()
{
  while (file.next_line())
    process_device_line() ;
}


void MobilesReaderCSV::process_device_line()
{
  string mac ;
  if (! file.read_field(mac))
    throw malformed_input_data("Cannot read mobile's MAC address!") ;
  PosUtil::to_upper(mac) ;

  float gain ;
  if (! file.read_field(gain))
    throw malformed_input_data("Cannot read mobile's gain!") ;

  float power ;
  if (! file.read_field(power))
    throw malformed_input_data("Cannot read mobile's power!") ;

  string ip("") ;

  Mobile device(ip, mac, gain, power) ;
  Stock::find_create_mobile(device) ;
}
