aboutsummaryrefslogtreecommitdiff
path: root/store/works/life/cpp-practicum/Vendor.cpp
blob: 7544451c923ae594ebc359ff3c6af79346cf7592 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "Vendor.hpp"

#include <QString>

QTextStream &operator>>(QTextStream &left, Vendor &right) {
  auto line = left.readLine();

  auto fields = line.split(QChar('|'));

  if (fields.size() != 5) {
    throw SerializationException("Line has not 5 parts.");
  }

  bool ok;
  auto id = fields[0].toInt(&ok);
  if (!ok) {
    throw SerializationException("Part 1 is not a number.");
  }

  right.SetId(id);
  right.SetName(fields[1].toStdU16String());
  right.SetType(fields[2].toStdU16String());
  right.SetAddress(fields[3].toStdU16String());
  right.SetPhone(fields[4].toStdU16String());

  return left;
}

QTextStream &operator<<(QTextStream &left, const Vendor &right) {
  left << right.GetId() << '|' << right.GetName() << '|' << right.GetType()
       << '|' << right.GetAddress() << '|' << right.GetPhone();
  return left;
}