/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _OD_AUDITINFO_INCLUDED_ #define _OD_AUDITINFO_INCLUDED_ #include "TD_PackPush.h" #include "DbRootExport.h" #include "OdString.h" #include "CmColor.h" #include "RxObject.h" class OdAuditInfoImpl; //class OdRxObject; /** \details This class tracks audit information during a database audit. \sa TD_Db */ class DBROOT_EXPORT OdAuditInfo { public: enum PrintDest { kSilent = 0, // None. kCmdLine = 1, // Command line. kFile = 2, // File. kBoth = 3 // Both command line and file. }; struct MsgInfo { OdString strName; OdString strValue; OdString strValidation; OdString strDefaultValue; bool bIsError; }; OdAuditInfo(); virtual ~OdAuditInfo(); /** \details Returns true if and only if errors are to be fixed during the audit that uses this AuditInfo object. */ bool fixErrors() const; /** \details Controls the fixing of errors are to be fixed during the audit that uses this AuditInfo object. \param fixErrors [in] Fix errors. */ void setFixErrors( bool fixErrors); /** \details Returns the number of errors reported to this AuditInfo object. */ int numErrors() const; /** \details Returns the number of errors reported as fixed to this AuditInfo object. */ int numFixes() const; /** \details Increments the count of errors reported to this AuditInfo object. \param increment [in] Increment. */ void errorsFound( int count); /** \details Increments the count of errors reported as fixed to this AuditInfo object. \param increment [in] Increment. */ void errorsFixed( int count); /** \details Notification function called to print error information. \remarks Prints log information about an error detected or fixed during an audit. \param name [in] Type of erroneous data found. \param value [in] Value of the bad data. \param validation [in] Reason the data were bad. \param defaultValue [in] Default value to which the were set. \note As implemented, this functions does nothing. */ virtual void printError( const OdString& name, const OdString& value, const OdString& validation = OdString::kEmpty, const OdString& defaultValue = OdString::kEmpty ); /** \param pObject [in] Pointer to the object which generated the error. \remarks pObject->isA()->name() is used to generate the name. */ virtual void printError( const OdRxObject* pObject, const OdString& value, const OdString& validation = OdString::kEmpty, const OdString& defaultValue = OdString::kEmpty); /** \details Notification function called to print log information. \param logInfo [in] Log information. */ virtual void printInfo ( const OdString& logInfo); /** \details Allows fixed objects to specify a regen is required. */ void requestRegen(); /** \details Resets the number of errors reported to this AuditInfo object. */ void resetNumEntities(); /** \details Increments by one the number of errors reported as processed to this AuditInfo object. */ void incNumEntities(); /** \details Returns the number of entities reported as processed to this AuditInfo object. */ int numEntities(); /** \details Returns the last error information that is intended for printing. */ virtual const MsgInfo& getLastInfo(); /** \details Sets the last error information that is intended for printing. \param lastInfo [in] Last error information. */ virtual void setLastInfo( MsgInfo &lastInfo); /* If the current count of entities being maintained in the instance of OdAuditInfo is a multiple of 100, and msg is not NULL, then this function will print the string pointed to by msg followed by the current entity count out to the audit log file. void printNumEntities(const OdChar* msg); */ /** \details Sets the destination for log printing. \param printDest [in] Print destination. \remarks printDest must be one of the following: Name Value Description kSilent 0 None. kCmdLine 1 Command line. kFile 2 File. kBoth 3 Both command line and file.
*/ void setPrintDest( PrintDest printDest); /** \details Returns the destination for log printing. \remarks getPrintDest() returns one of the following: Name Value Description kSilent 0 None. kCmdLine 1 Command line. kFile 2 File. kBoth 3 Both command line and file.
*/ PrintDest getPrintDest(); private: OdAuditInfoImpl* m_pImpl; }; /** \details This registration allows you to catch the invoking of each audit info destructor. */ typedef void (*ODAUDITINFO_CALLBACK)(const OdAuditInfo*); DBROOT_EXPORT void odrxRegisterAuditInfoDestructorCallback(const ODAUDITINFO_CALLBACK callbackFunc); DBROOT_EXPORT void odrxUnregisterAuditInfoDestructorCallback(); #include "TD_PackPop.h" #endif // _OD_AUDITINFO_INCLUDED_