///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) Statoil ASA // Copyright (C) Ceetron Solutions AS // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "cvfObject.h" #include #include #include class RimProject; //================================================================================================== // // // //================================================================================================== class RiaProjectModifier : public cvf::Object { public: RiaProjectModifier(); void setReplaceCaseFirstOccurrence( const QString& newGridFileName ); void setReplaceCase( int caseIdToReplace, const QString& newGridFileName ); void setReplaceSourceCasesFirstOccurrence( const std::vector& newGridFileNames ); void setReplaceSourceCasesById( int caseGroupIdToReplace, const std::vector& newGridFileNames ); void setReplacePropertiesFolderFirstOccurrence( QString newPropertiesFolder ); void setReplacePropertiesFolder( int caseIdToReplace, QString newPropertiesFolder ); // Used by the regression test system to invalidate all paths to test if the tests run as expected if external files // are missing/invalid void setInvalidateExternalFilePaths(); bool applyModificationsToProject( RimProject* project ); private: void replaceSourceCases( RimProject* project ); void replaceCase( RimProject* project ); void replacePropertiesFolder( RimProject* project ); void invalidateExternalFilePaths( RimProject* project ); static QString makeFilePathAbsolute( const QString& relOrAbsolutePath ); static QString caseNameFromGridFileName( const QString& fullGridFilePathName ); static int firstCaseId( RimProject* project ); static int firstGroupId( RimProject* project ); static int firstInputCaseId( RimProject* project ); static int firstOccurrenceId(); private: std::map m_caseIdToGridFileNameMap; std::map> m_groupIdToGridFileNamesMap; std::map m_caseIdToPropertiesFolderMap; bool m_invalidateExternalFilePaths; };