diff --git a/ApplicationLibCode/Application/Tools/CMakeLists_files.cmake b/ApplicationLibCode/Application/Tools/CMakeLists_files.cmake index ceb110c3a9..94101bebfe 100644 --- a/ApplicationLibCode/Application/Tools/CMakeLists_files.cmake +++ b/ApplicationLibCode/Application/Tools/CMakeLists_files.cmake @@ -18,7 +18,7 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RiaInterpolationTools.h ${CMAKE_CURRENT_LIST_DIR}/RiaSummaryAddressAnalyzer.h ${CMAKE_CURRENT_LIST_DIR}/RiaSimWellBranchTools.h - ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileVersionTools.h + ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileTools.h ${CMAKE_CURRENT_LIST_DIR}/RiaStringEncodingTools.h ${CMAKE_CURRENT_LIST_DIR}/RiaTextStringTools.h ${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.h @@ -77,7 +77,7 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RiaInterpolationTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaSummaryAddressAnalyzer.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaSimWellBranchTools.cpp - ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileVersionTools.cpp + ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaStringEncodingTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaTextStringTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.cpp diff --git a/ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.cpp b/ApplicationLibCode/Application/Tools/RiaProjectFileTools.cpp similarity index 56% rename from ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.cpp rename to ApplicationLibCode/Application/Tools/RiaProjectFileTools.cpp index 8741e46817..962d8b1ba9 100644 --- a/ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.cpp +++ b/ApplicationLibCode/Application/Tools/RiaProjectFileTools.cpp @@ -16,51 +16,47 @@ // ///////////////////////////////////////////////////////////////////////////////// -#include "RiaProjectFileVersionTools.h" +#include "RiaProjectFileTools.h" #include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RiaProjectFileVersionTools::isCandidateVersionNewerThanOther( const QString& candidateProjectFileVersion, const QString& projectFileVersion ) +bool RiaProjectFileTools::isCandidateVersionNewerThanOther( const QString& candidateProjectFileVersion, const QString& projectFileVersion ) { int candidateMajorVersion = 0; int candidateMinorVersion = 0; int candidatePatchNumber = -1; int candidateDevelopmentId = -1; - RiaProjectFileVersionTools::decodeVersionString( candidateProjectFileVersion, - &candidateMajorVersion, - &candidateMinorVersion, - &candidatePatchNumber, - &candidateDevelopmentId ); + RiaProjectFileTools::decodeVersionString( candidateProjectFileVersion, + &candidateMajorVersion, + &candidateMinorVersion, + &candidatePatchNumber, + &candidateDevelopmentId ); int majorVersion = 0; int minorVersion = 0; int patchNumber = -1; int developmentId = -1; - RiaProjectFileVersionTools::decodeVersionString( projectFileVersion, &majorVersion, &minorVersion, &patchNumber, &developmentId ); + RiaProjectFileTools::decodeVersionString( projectFileVersion, &majorVersion, &minorVersion, &patchNumber, &developmentId ); - return RiaProjectFileVersionTools::isCandidateNewerThanOther( candidateMajorVersion, - candidateMinorVersion, - candidatePatchNumber, - candidateDevelopmentId, - majorVersion, - minorVersion, - patchNumber, - developmentId ); + return RiaProjectFileTools::isCandidateNewerThanOther( candidateMajorVersion, + candidateMinorVersion, + candidatePatchNumber, + candidateDevelopmentId, + majorVersion, + minorVersion, + patchNumber, + developmentId ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiaProjectFileVersionTools::decodeVersionString( const QString& projectFileVersion, - int* majorVersion, - int* minorVersion, - int* patch, - int* developmentId ) +void RiaProjectFileTools::decodeVersionString( const QString& projectFileVersion, int* majorVersion, int* minorVersion, int* patch, int* developmentId ) { if ( projectFileVersion.isEmpty() ) return; @@ -79,7 +75,7 @@ void RiaProjectFileVersionTools::decodeVersionString( const QString& projectFile if ( subStrings.size() > 2 ) { QString candidate = subStrings[2]; - QString candidateDigitsOnly = RiaProjectFileVersionTools::stringOfDigits( candidate ); + QString candidateDigitsOnly = RiaProjectFileTools::stringOfDigits( candidate ); *patch = candidateDigitsOnly.toInt(); } @@ -87,7 +83,7 @@ void RiaProjectFileVersionTools::decodeVersionString( const QString& projectFile if ( subStrings.size() > 3 ) { QString candidate = subStrings.back(); - QString candidateDigitsOnly = RiaProjectFileVersionTools::stringOfDigits( candidate ); + QString candidateDigitsOnly = RiaProjectFileTools::stringOfDigits( candidate ); *developmentId = candidateDigitsOnly.toInt(); } @@ -96,14 +92,14 @@ void RiaProjectFileVersionTools::decodeVersionString( const QString& projectFile //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RiaProjectFileVersionTools::isCandidateNewerThanOther( int candidateMajorVersion, - int candidateMinorVersion, - int candidatePatchNumber, - int candidateDevelopmentId, - int otherMajorVersion, - int otherMinorVersion, - int otherPatchNumber, - int otherDevelopmentId ) +bool RiaProjectFileTools::isCandidateNewerThanOther( int candidateMajorVersion, + int candidateMinorVersion, + int candidatePatchNumber, + int candidateDevelopmentId, + int otherMajorVersion, + int otherMinorVersion, + int otherPatchNumber, + int otherDevelopmentId ) { if ( candidateMajorVersion != otherMajorVersion ) { @@ -137,7 +133,7 @@ bool RiaProjectFileVersionTools::isCandidateNewerThanOther( int candidateMajorVe //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString RiaProjectFileVersionTools::stringOfDigits( const QString& string ) +QString RiaProjectFileTools::stringOfDigits( const QString& string ) { QString digitsOnly; diff --git a/ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.h b/ApplicationLibCode/Application/Tools/RiaProjectFileTools.h similarity index 61% rename from ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.h rename to ApplicationLibCode/Application/Tools/RiaProjectFileTools.h index d473d25f46..b65199a3be 100644 --- a/ApplicationLibCode/Application/Tools/RiaProjectFileVersionTools.h +++ b/ApplicationLibCode/Application/Tools/RiaProjectFileTools.h @@ -18,12 +18,17 @@ #pragma once +#include "cafPdmField.h" +#include "cafPdmObjectHandle.h" + #include +#include + //================================================================================================== // //================================================================================================== -class RiaProjectFileVersionTools +class RiaProjectFileTools { public: static bool isCandidateVersionNewerThanOther( const QString& candidateProjectFileVersion, const QString& otherProjectFileVersion ); @@ -31,6 +36,39 @@ public: // Public to be able to unit test function, not intended to be used static void decodeVersionString( const QString& projectFileVersion, int* majorVersion, int* minorVersion, int* patch, int* developmentId ); + template + static void fieldContentsByType( const caf::PdmObjectHandle* object, std::vector& fieldContents ) + { + if ( !object ) return; + + std::vector allFieldsInObject = object->fields(); + + std::vector children; + + for ( const auto& field : allFieldsInObject ) + { + caf::PdmField* typedField = dynamic_cast*>( field ); + if ( typedField ) fieldContents.push_back( &typedField->v() ); + + caf::PdmField>* typedFieldInVector = dynamic_cast>*>( field ); + if ( typedFieldInVector ) + { + for ( T& typedFieldFromVector : typedFieldInVector->v() ) + { + fieldContents.push_back( &typedFieldFromVector ); + } + } + + auto other = field->children(); + children.insert( children.end(), other.begin(), other.end() ); + } + + for ( const auto& child : children ) + { + fieldContentsByType( child, fieldContents ); + } + } + private: static bool isCandidateNewerThanOther( int candidateMajorVersion, int candidateMinorVersion, diff --git a/ApplicationLibCode/ProjectDataModel/RimProject.cpp b/ApplicationLibCode/ProjectDataModel/RimProject.cpp index 18b1710b5c..5b6605f265 100644 --- a/ApplicationLibCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimProject.cpp @@ -26,7 +26,7 @@ #include "RiaGuiApplication.h" #include "RiaPreferences.h" #include "RiaProjectBackupTools.h" -#include "RiaProjectFileVersionTools.h" +#include "RiaProjectFileTools.h" #include "RiaTextStringTools.h" #include "RiaVersionInfo.h" @@ -479,7 +479,7 @@ bool RimProject::isProjectFileVersionEqualOrOlderThan( const QString& otherProje { QString candidateProjectFileVersion = projectFileVersionString(); - return !RiaProjectFileVersionTools::isCandidateVersionNewerThanOther( candidateProjectFileVersion, otherProjectFileVersion ); + return !RiaProjectFileTools::isCandidateVersionNewerThanOther( candidateProjectFileVersion, otherProjectFileVersion ); } //-------------------------------------------------------------------------------------------------- @@ -1336,7 +1336,7 @@ RimPlotTemplateFolderItem* RimProject::rootPlotTemplateItem() const std::vector RimProject::allFilePaths() const { std::vector filePaths; - fieldContentsByType( this, filePaths ); + RiaProjectFileTools::fieldContentsByType( this, filePaths ); return filePaths; } diff --git a/ApplicationLibCode/ProjectDataModel/RimProject.h b/ApplicationLibCode/ProjectDataModel/RimProject.h index 0809df9649..97d69a8311 100644 --- a/ApplicationLibCode/ProjectDataModel/RimProject.h +++ b/ApplicationLibCode/ProjectDataModel/RimProject.h @@ -204,9 +204,6 @@ protected: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; private: - template - static void fieldContentsByType( const caf::PdmObjectHandle* object, std::vector& fieldContents ); - void transferPathsToGlobalPathList(); void distributePathsFromGlobalPathList(); @@ -239,42 +236,3 @@ private: caf::PdmChildArrayField casesObsolete; // obsolete caf::PdmChildArrayField caseGroupsObsolete; // obsolete }; - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -template -void RimProject::fieldContentsByType( const caf::PdmObjectHandle* object, std::vector& fieldContents ) -{ - if ( !object ) return; - - std::vector allFieldsInObject = object->fields(); - - std::vector children; - - for ( const auto& field : allFieldsInObject ) - { - auto xmlFieldCapability = field->xmlCapability(); - if ( xmlFieldCapability && !xmlFieldCapability->isIOWritable() ) continue; - - caf::PdmField* typedField = dynamic_cast*>( field ); - if ( typedField ) fieldContents.push_back( &typedField->v() ); - - caf::PdmField>* typedFieldInVector = dynamic_cast>*>( field ); - if ( typedFieldInVector ) - { - for ( T& typedFieldFromVector : typedFieldInVector->v() ) - { - fieldContents.push_back( &typedFieldFromVector ); - } - } - - auto other = field->children(); - children.insert( children.end(), other.begin(), other.end() ); - } - - for ( const auto& child : children ) - { - fieldContentsByType( child, fieldContents ); - } -} diff --git a/ApplicationLibCode/UnitTests/CMakeLists.txt b/ApplicationLibCode/UnitTests/CMakeLists.txt index c6cb4e19be..8a276f4732 100644 --- a/ApplicationLibCode/UnitTests/CMakeLists.txt +++ b/ApplicationLibCode/UnitTests/CMakeLists.txt @@ -34,7 +34,7 @@ set(SOURCE_UNITTEST_FILES ${CMAKE_CURRENT_LIST_DIR}/FixedWidthDataParser-Test.cpp ${CMAKE_CURRENT_LIST_DIR}/RigTimeCurveHistoryMerger-Test.cpp ${CMAKE_CURRENT_LIST_DIR}/ListKeywordsForObjectsAndFields-Test.cpp - ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileVersionTools-Test.cpp + ${CMAKE_CURRENT_LIST_DIR}/RiaProjectFileTools-Test.cpp ${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyTableReader-Test.cpp ${CMAKE_CURRENT_LIST_DIR}/RimRelocatePath-Test.cpp ${CMAKE_CURRENT_LIST_DIR}/RigTransmissibilityCondenser-Test.cpp diff --git a/ApplicationLibCode/UnitTests/RiaProjectFileVersionTools-Test.cpp b/ApplicationLibCode/UnitTests/RiaProjectFileTools-Test.cpp similarity index 84% rename from ApplicationLibCode/UnitTests/RiaProjectFileVersionTools-Test.cpp rename to ApplicationLibCode/UnitTests/RiaProjectFileTools-Test.cpp index bfecd864cf..83a9932d69 100644 --- a/ApplicationLibCode/UnitTests/RiaProjectFileVersionTools-Test.cpp +++ b/ApplicationLibCode/UnitTests/RiaProjectFileTools-Test.cpp @@ -1,10 +1,10 @@ #include "gtest/gtest.h" -#include "RiaProjectFileVersionTools.h" +#include "RiaProjectFileTools.h" #include -TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) +TEST( RiaProjectFileTools, DecodeProjectVersionString ) { { int majorVersion = -1; @@ -13,7 +13,7 @@ TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) int developmentId = -1; QString projectFileVersionString = "2017.05.1"; - RiaProjectFileVersionTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); + RiaProjectFileTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); EXPECT_EQ( 2017, majorVersion ); EXPECT_EQ( 5, minorVersion ); @@ -28,7 +28,7 @@ TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) int developmentId = -1; QString projectFileVersionString = ""; - RiaProjectFileVersionTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); + RiaProjectFileTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); EXPECT_EQ( -1, majorVersion ); EXPECT_EQ( -1, minorVersion ); @@ -43,7 +43,7 @@ TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) int developmentId = -1; QString projectFileVersionString = "2017.05.2-dev.23"; - RiaProjectFileVersionTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); + RiaProjectFileTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); EXPECT_EQ( 2017, majorVersion ); EXPECT_EQ( 5, minorVersion ); @@ -58,7 +58,7 @@ TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) int developmentId = -1; QString projectFileVersionString = "2017.05.2-dev.long.text..23"; - RiaProjectFileVersionTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); + RiaProjectFileTools::decodeVersionString( projectFileVersionString, &majorVersion, &minorVersion, &patchNumber, &developmentId ); EXPECT_EQ( 2017, majorVersion ); EXPECT_EQ( 5, minorVersion ); @@ -67,7 +67,7 @@ TEST( RiaProjectFileVersionTools, DecodeProjectVersionString ) } } -TEST( RiaProjectFileVersionTools, OrderKnownVersionStrings ) +TEST( RiaProjectFileTools, OrderKnownVersionStrings ) { QStringList versionStrings; { @@ -141,7 +141,7 @@ TEST( RiaProjectFileVersionTools, OrderKnownVersionStrings ) QStringList sortedVersionList = versionStrings; { - std::sort( sortedVersionList.begin(), sortedVersionList.end(), RiaProjectFileVersionTools::isCandidateVersionNewerThanOther ); + std::sort( sortedVersionList.begin(), sortedVersionList.end(), RiaProjectFileTools::isCandidateVersionNewerThanOther ); } /*