QxOrm  1.2.7
C++ Object Relational Mapping library
QxInvalidValueX.h
Go to the documentation of this file.
00001 /****************************************************************************
00002 **
00003 ** http://www.qxorm.com/
00004 ** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
00005 **
00006 ** This file is part of the QxOrm library
00007 **
00008 ** This software is provided 'as-is', without any express or implied
00009 ** warranty. In no event will the authors be held liable for any
00010 ** damages arising from the use of this software
00011 **
00012 ** Commercial Usage
00013 ** Licensees holding valid commercial QxOrm licenses may use this file in
00014 ** accordance with the commercial license agreement provided with the
00015 ** Software or, alternatively, in accordance with the terms contained in
00016 ** a written agreement between you and Lionel Marty
00017 **
00018 ** GNU General Public License Usage
00019 ** Alternatively, this file may be used under the terms of the GNU
00020 ** General Public License version 3.0 as published by the Free Software
00021 ** Foundation and appearing in the file 'license.gpl3.txt' included in the
00022 ** packaging of this file. Please review the following information to
00023 ** ensure the GNU General Public License version 3.0 requirements will be
00024 ** met : http://www.gnu.org/copyleft/gpl.html
00025 **
00026 ** If you are unsure which license is appropriate for your use, or
00027 ** if you have questions regarding the use of this file, please contact :
00028 ** contact@qxorm.com
00029 **
00030 ****************************************************************************/
00031 
00032 #ifndef _QX_VALIDATOR_INVALID_VALUE_X_H_
00033 #define _QX_VALIDATOR_INVALID_VALUE_X_H_
00034 
00035 #ifdef _MSC_VER
00036 #pragma once
00037 #endif
00038 
00046 #include <boost/serialization/serialization.hpp>
00047 #include <boost/serialization/nvp.hpp>
00048 
00049 #include <QxSerialize/Qt/QxSerialize_QString.h>
00050 #include <QxSerialize/Qt/QxSerialize_QList.h>
00051 
00052 #include <QxValidator/QxInvalidValue.h>
00053 
00054 #include <QxTraits/get_class_name.h>
00055 
00056 namespace qx {
00057 
00065 class QX_DLL_EXPORT QxInvalidValueX
00066 {
00067 
00068    friend class boost::serialization::access;
00069 
00070 protected:
00071 
00072    QList<QxInvalidValue> m_lstInvalidValues;    
00073    QString m_sCurrentPath;                      
00074 
00075 public:
00076 
00077    QxInvalidValueX();
00078    virtual ~QxInvalidValueX();
00079 
00080    QString getCurrentPath() const;
00081    void setCurrentPath(const QString & s);
00082 
00083    long count() const;
00084    QxInvalidValue at(long l) const;
00085    void insert(const IxValidator * pValidator);
00086    void insert(const QString & sMessage);
00087    void insert(const QxInvalidValue & invalidValue);
00088    void insert(const QxInvalidValueX & other);
00089 
00090    QString text() const;
00091    void dump() const;
00092 
00093    inline operator bool() const
00094    { return (m_lstInvalidValues.count() == 0); }
00095 
00096 private:
00097 
00098    template <class Archive>
00099    void serialize(Archive & ar, const unsigned int file_version)
00100    {
00101       Q_UNUSED(file_version);
00102       ar & boost::serialization::make_nvp("list_invalid_values", m_lstInvalidValues);
00103       ar & boost::serialization::make_nvp("current_path", m_sCurrentPath);
00104    }
00105 
00106 };
00107 
00108 } // namespace qx
00109 
00110 QX_REGISTER_CLASS_NAME(qx::QxInvalidValueX)
00111 
00112 #endif // _QX_VALIDATOR_INVALID_VALUE_X_H_