AppFwk : Add support for output of object and field keywords

This commit is contained in:
Magne Sjaastad 2017-12-15 17:00:36 +01:00
parent d5b12a8b23
commit d15808efe6
4 changed files with 94 additions and 0 deletions

View File

@ -34,6 +34,7 @@ ${CEE_CURRENT_LIST_DIR}RicExpressionParser-Test.cpp
${CEE_CURRENT_LIST_DIR}RiuSummaryVectorDescriptionMap-Test.cpp
${CEE_CURRENT_LIST_DIR}FixedWidthDataParser-Test.cpp
${CEE_CURRENT_LIST_DIR}RigTimeCurveHistoryMerger-Test.cpp
${CEE_CURRENT_LIST_DIR}ListKeywordsForObjectsAndFields-Test.cpp
)
if (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_FRACTURES)

View File

@ -0,0 +1,75 @@
#include "gtest/gtest.h"
#include "cafPdmDefaultObjectFactory.h"
#include "cafPdmObjectHandle.h"
#include <QFile>
#include <QTextStream>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void writeTextToFile(const QString& filePath, const QString& text)
{
QFile exportFile(filePath);
if (exportFile.open(QIODevice::WriteOnly))
{
QTextStream stream(&exportFile);
stream << text;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(ListKeywords, ListAllObjectKeywords)
{
auto instance = caf::PdmDefaultObjectFactory::instance();
QString textString;
QTextStream stream(&textString);
std::vector<QString> classKeywords = instance->classKeywords();
for (auto keyword : classKeywords)
{
stream << keyword << "\n";
}
QString filePath = "c:/temp/ri-objectKeywords.txt";
// writeTextToFile(filePath, textString);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(ListKeywords, ListAllObjectKeywordsAndFieldKeywords)
{
auto instance = caf::PdmDefaultObjectFactory::instance();
QString textString;
QTextStream stream(&textString);
std::vector<QString> classKeywords = instance->classKeywords();
for (auto keyword : classKeywords)
{
stream << keyword << "\n";
caf::PdmObjectHandle* myClass = instance->create(keyword);
std::vector<caf::PdmFieldHandle*> fields;
myClass->fields(fields);
for (auto f : fields)
{
stream << " " << f->keyword() << "\n";
}
stream << "\n";
delete myClass;
}
QString filePath = "c:/temp/ri-fieldKeywords.txt";
// writeTextToFile(filePath, textString);
}

View File

@ -24,6 +24,21 @@ PdmObjectHandle * PdmDefaultObjectFactory::create(const QString& classNameKeywor
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> PdmDefaultObjectFactory::classKeywords() const
{
std::vector<QString> names;
for (const auto& entry : m_factoryMap)
{
names.push_back(entry.first);
}
return names;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -44,6 +44,7 @@
#include <QString>
#include <map>
#include <vector>
namespace caf
{
@ -84,6 +85,8 @@ public:
}
}
std::vector<QString> classKeywords() const;
private:
PdmDefaultObjectFactory() {}
~PdmDefaultObjectFactory() { /* Could clean up, but ... */ }