File indexing completed on 2024-06-09 05:01:52

0001 /*
0002     SPDX-FileCopyrightText: 2014-2015 Christian Dávid <christian-david@web.de>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "payeeidentifier.h"
0007 
0008 #include "payeeidentifierdata.h"
0009 
0010 payeeIdentifier::payeeIdentifier()
0011     : m_id(0),
0012       m_payeeIdentifier(0)
0013 {
0014 }
0015 
0016 payeeIdentifier::payeeIdentifier(const payeeIdentifier& other)
0017     : m_id(other.m_id),
0018       m_payeeIdentifier(0)
0019 {
0020     if (other.m_payeeIdentifier != 0)
0021         m_payeeIdentifier = other.m_payeeIdentifier->clone();
0022 }
0023 
0024 payeeIdentifier::payeeIdentifier(payeeIdentifierData*const identifierdata)
0025     : m_id(0),
0026       m_payeeIdentifier(identifierdata)
0027 {
0028 }
0029 
0030 payeeIdentifier::payeeIdentifier(const payeeIdentifier::id_t& id, payeeIdentifierData*const identifierdata)
0031     : m_id(id),
0032       m_payeeIdentifier(identifierdata)
0033 {
0034 }
0035 
0036 payeeIdentifier::payeeIdentifier(const QString& id, payeeIdentifierData* const identifierdata)
0037     : m_id(id.midRef(5).toUInt())
0038     , m_payeeIdentifier(identifierdata)
0039 {
0040     bool ok = false; // hopefully the compiler optimizes this away if compiled in non-debug mode
0041     Q_ASSERT(id.midRef(5).toUInt(&ok) && ok);
0042 }
0043 
0044 payeeIdentifier::payeeIdentifier(const payeeIdentifier::id_t& id, const payeeIdentifier& other)
0045     : m_id(id),
0046       m_payeeIdentifier(0)
0047 {
0048     if (other.m_payeeIdentifier != 0)
0049         m_payeeIdentifier = other.m_payeeIdentifier->clone();
0050 }
0051 
0052 QString payeeIdentifier::idString() const
0053 {
0054     QString rc;
0055     if (m_id != 0) {
0056         rc = QString("IDENT%1").arg(m_id, 6, 10, QLatin1Char('0'));
0057     }
0058     return rc;
0059 }
0060 
0061 payeeIdentifier::~payeeIdentifier()
0062 {
0063     delete m_payeeIdentifier;
0064 }
0065 
0066 payeeIdentifierData* payeeIdentifier::operator->()
0067 {
0068     if (m_payeeIdentifier == 0)
0069         throw PAYEEIDENTIFIEREMPTYEXCEPTION;
0070     return m_payeeIdentifier;
0071 }
0072 
0073 const payeeIdentifierData* payeeIdentifier::operator->() const
0074 {
0075     if (m_payeeIdentifier == 0)
0076         throw PAYEEIDENTIFIEREMPTYEXCEPTION;
0077     return m_payeeIdentifier;
0078 }
0079 
0080 payeeIdentifierData* payeeIdentifier::data()
0081 {
0082     return operator->();
0083 }
0084 
0085 const payeeIdentifierData* payeeIdentifier::data() const
0086 {
0087     return operator->();
0088 }
0089 
0090 bool payeeIdentifier::isValid() const
0091 {
0092     if (m_payeeIdentifier != 0)
0093         return m_payeeIdentifier->isValid();
0094     return false;
0095 }
0096 
0097 QString payeeIdentifier::iid() const
0098 {
0099     if (m_payeeIdentifier != 0)
0100         return m_payeeIdentifier->payeeIdentifierId();
0101     return QString();
0102 }
0103 
0104 payeeIdentifier& payeeIdentifier::operator=(const payeeIdentifier & other)
0105 {
0106     if (this == &other)
0107         return *this;
0108 
0109     m_id = other.m_id;
0110     if (other.m_payeeIdentifier == 0)
0111         m_payeeIdentifier = 0;
0112     else
0113         m_payeeIdentifier = other.m_payeeIdentifier->clone();
0114 
0115     return *this;
0116 }
0117 
0118 bool payeeIdentifier::operator==(const payeeIdentifier& other) const
0119 {
0120     if (m_id != other.m_id)
0121         return false;
0122 
0123     if (isNull() || other.isNull()) {
0124         if (!isNull() ||  !other.isNull())
0125             return false;
0126         return true;
0127     }
0128     return (*data() == *(other.data()));
0129 }
0130