/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "ExPrintConsole.h" #include #include "daiModule.h" #include "ExValidationCommon.h" #include "ExConsoleValidationNotifier.h" using namespace OdDAI; ODRX_CONS_DEFINE_MEMBERS(ConsoleValidationNotifier, ValidationNotifier, RXIMPL_CONSTR); void ConsoleValidationNotifier::onValidationResult(OdDAIObjectId instanceId, ValidationTaskPtr validationTask, OdSharedPtr invalidParams, Logical result) { if (ValidationTask::InvalidValidationParams* invalidValidationParams = dynamic_cast(invalidParams.get())) { if (invalidValidationParams->invalidAttributes.size() > 0 && invalidValidationParams->invalidWhereRules.size() > 0) { for (int i = 0; i < static_cast(invalidValidationParams->invalidAttributes.size()); ++i) { odPrintConsoleString(L"#%lu %s %s %s (WR: %s) %s\n", (OdUInt64)instanceId.getHandle(), OdString(instanceId.getNested()->typeName()).c_str(), OdString(validationTask->description()).c_str(), OdString(invalidValidationParams->invalidAttributes.at(i)->originalName()).c_str(), OdString(invalidValidationParams->invalidWhereRules.at(i)->originalLabel()).c_str(), OdString(result2string(result)).c_str()); } m_statistics.addResult(result, invalidValidationParams->invalidWhereRules.size()); } else if (invalidValidationParams->invalidAttributes.size() > 0) { for (auto it : invalidValidationParams->invalidAttributes) { odPrintConsoleString(L"#%lu %s %s %s %s\n", (OdUInt64)instanceId.getHandle(), OdString(instanceId.getNested()->typeName()).c_str(), OdString(validationTask->description()).c_str(), OdString(it->originalName()).c_str(), OdString(result2string(result)).c_str()); } m_statistics.addResult(result, invalidValidationParams->invalidAttributes.size()); } else if (invalidValidationParams->invalidWhereRules.size() > 0) { for (auto it : invalidValidationParams->invalidWhereRules) { odPrintConsoleString(L"#%lu %s %s WR: %s %s\n", (OdUInt64)instanceId.getHandle(), OdString(instanceId.getNested()->typeName()).c_str(), OdString(validationTask->description()).c_str(), OdString(it->originalLabel()).c_str(), OdString(result2string(result)).c_str()); } m_statistics.addResult(result, invalidValidationParams->invalidWhereRules.size()); } else { odPrintConsoleString(L"#%lu %s %s %s\n", (OdUInt64)instanceId.getHandle(), OdString(instanceId.getNested()->typeName()).c_str(), OdString(validationTask->description()).c_str(), OdString(result2string(result)).c_str()); m_statistics.addResult(result, invalidValidationParams->invalidWhereRules.size()); } } else if (OdDAI::ValidationTask::InvalidRxArrayValidationParams* invalidValidationParams = dynamic_cast(invalidParams.get())) { for (const auto& params : invalidValidationParams->invalidParams) { for (auto obj : params.invalidObjects) { odPrintConsoleString(L"%s ", OdString(translateObjectToText(obj)).c_str()); } odPrintConsoleString(L"%s %s %s\n", OdString(validationTask->description()).c_str(), OdString(params.textMessage).c_str(), OdString(result2string(result)).c_str()); m_statistics.addResult(result, invalidValidationParams->invalidParams.size()); } } else if (OdDAI::ValidationTask::InvalidRxObjectsValidationParams* invalidValidationParams = dynamic_cast(invalidParams.get())) { for (auto obj : invalidValidationParams->invalidObjects) { odPrintConsoleString(L"%s ", OdString(translateObjectToText(obj)).c_str()); } odPrintConsoleString(L"%s %s %s\n", OdString(validationTask->description()).c_str(), OdString(invalidValidationParams->textMessage).c_str(), OdString(result2string(result)).c_str()); m_statistics.addResult(result, invalidValidationParams->invalidObjects.size()); } else if (instanceId.isValid()) { odPrintConsoleString(L"#%lu %s %s %s\n", (OdUInt64)instanceId.getHandle(), OdString(instanceId.getNested()->typeName()).c_str(), OdString(validationTask->description()).c_str(), OdString(result2string(result)).c_str()); m_statistics.addResult(result, 1); } else { odPrintConsoleString(L"Invalid instanceId\n"); } } void ConsoleValidationNotifier::onValidationResult(ValidationTaskPtr validationTask, const OdDAIObjectIds& invalidObjects, OdDAI::Logical result) { if (invalidObjects.size() > 0) { for (auto it : invalidObjects) { odPrintConsoleString(L"#%lu %s ", (OdUInt64)it.getHandle(), OdString(it.getNested()->typeName()).c_str()); } odPrintConsoleString(L" %s %s", OdString(validationTask->description()).c_str(), OdString(result2string(result)).c_str()); } else { odPrintConsoleString(L"%s %s\n", OdString(validationTask->description()).c_str(), OdString(result2string(result)).c_str()); } } void ConsoleValidationNotifier::onStartValidation() { if (m_extraInfo) odPrintConsoleString(L"File name: %s\nFile schema: %s\n", OdString(m_extraInfo->fileName).c_str(), OdString(m_extraInfo->schemaName).c_str()); } void ConsoleValidationNotifier::onEndValidation() { odPrintConsoleString(L"\nErrors: %i\n", m_statistics.errors); odPrintConsoleString(L"Unknown: %i\n", m_statistics.unknown); odPrintConsoleString(L"Unset: %i\n", m_statistics.unset); if (m_extraInfo && m_extraInfo->validationTime != OdDAI::Consts::OdULongUnset) odPrintConsoleString(L"Validation Time: %lu msec\n", m_extraInfo->validationTime); }