//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseInputCaseOpm::appendPropertiesFromStandaloneFiles(const QStringList& fileNames)
{
    for (auto filename : fileNames)
    {
        QFileInfo fi(filename);
        if (!fi.exists()) continue;

        RifReaderOpmParserPropertyReader propertyReader(filename);
        std::set<std::string> fileKeywordSet = propertyReader.keywords();

        std::vector<std::string> knownKeywords = RifReaderOpmParserInput::knownPropertyKeywords();
        for (auto knownKeyword : knownKeywords)
        {
            if (fileKeywordSet.count(knownKeyword) > 0)
            {
                QString qtKnownKeyword = QString::fromStdString(knownKeyword);
                QString resultName = this->reservoirData()->results(RifReaderInterface::MATRIX_RESULTS)->makeResultNameUnique(qtKnownKeyword);
                if (propertyReader.copyPropertyToCaseData(knownKeyword, this->reservoirData(), resultName))
                {
                    RimEclipseInputProperty* inputProperty = new RimEclipseInputProperty;
                    inputProperty->resultName = resultName;
                    inputProperty->eclipseKeyword = qtKnownKeyword;
                    inputProperty->fileName = filename;
                    inputProperty->resolvedState = RimEclipseInputProperty::RESOLVED;
                    m_inputPropertyCollection->inputProperties.push_back(inputProperty);
                }
            }
        }

        m_additionalFileNames.v().push_back(filename);
    }
}
Example #2
0
    UINT32 Codecs::__LoadFormats(const CodecLibrary &codecLibrary)
    {
        auto getHandlerProperty2
            = codecLibrary.GetProc<GetHandlerProperty2Func>(
            "GetHandlerProperty2", true);
        auto getHandlerProperty = getHandlerProperty2 ?
            nullptr :
            codecLibrary.GetProc<GetHandlerPropertyFunc>("GetHandlerProperty");
        UINT32 unNumberOfFormats = 1u;
        if (!getHandlerProperty)
        {
            auto getNumberOfFormats
                = codecLibrary.GetProc<GetNumberOfFormatsFunc>(
                "GetNumberOfFormats");
            getNumberOfFormats(&unNumberOfFormats);
        }

        UINT32 result = 0;
        LibraryPropertyReader propertyReader(
            getHandlerProperty, getHandlerProperty2);
        for (UINT32 i = 0; i != unNumberOfFormats; ++i)
        {
            try
            {
                m_vupCodecFormat.push_back(make_unique<CodecFormat>(
                    codecLibrary, i, propertyReader));
                ++result;
            }
            catch (const LibraryException &)
            {
            }
        }
        return result;
    }
void QShaderData::copy(const QNode *ref)
{
    QNode::copy(ref);
    const QShaderData *shaderData = static_cast<const QShaderData *>(ref);
    // We need to copy the properties
    // At the moment we assume that the properties are copyable
    // this may change in a later refactoring

    const QMetaObject *metaObject = shaderData->metaObject();
    const int propertyOffset = QShaderData::staticMetaObject.propertyOffset();
    const int propertyCount = metaObject->propertyCount();

    // Copy properties of shaderData
    for (int i = propertyOffset; i < propertyCount; ++i) {
        const QMetaProperty property = metaObject->property(i);
        setProperty(property.name(), propertyReader()->readProperty(shaderData->property(property.name())));
    }
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseInputCaseOpm::loadAndSyncronizeInputProperties()
{
    // Make sure we actually have reservoir data

    CVF_ASSERT(this->reservoirData());
    CVF_ASSERT(this->reservoirData()->mainGrid()->gridPointDimensions() != cvf::Vec3st(0, 0, 0));

    // Then read the properties from all the files referenced by the InputReservoir

    for (QString filename : m_additionalFileNames())
    {
        QFileInfo fileNameInfo(filename);
        bool isExistingFile = fileNameInfo.exists();

        // Find the input property objects referring to the file

        std::vector<RimEclipseInputProperty*> ipsUsingThisFile = this->m_inputPropertyCollection()->findInputProperties(filename);

        if (!isExistingFile)
        {
            for (auto inputProperty : ipsUsingThisFile)
            {
                inputProperty->resolvedState = RimEclipseInputProperty::FILE_MISSING;
            }
        }
        else
        {
            RifReaderOpmParserPropertyReader propertyReader(filename);
            std::set<std::string> fileKeywordSet = propertyReader.keywords();

            for (auto inputProperty : ipsUsingThisFile)
            {
                QString kw = inputProperty->eclipseKeyword();
                inputProperty->resolvedState = RimEclipseInputProperty::KEYWORD_NOT_IN_FILE;
                if (fileKeywordSet.count(kw.toStdString()))
                {
                    if (propertyReader.copyPropertyToCaseData(kw.toStdString(), this->reservoirData(), inputProperty->resultName))
                    {
                        inputProperty->resolvedState = RimEclipseInputProperty::RESOLVED;
                    }
                }
                fileKeywordSet.erase(kw.toStdString());
            }

            if (!fileKeywordSet.empty())
            {
                std::vector<std::string> knownKeywords = RifReaderOpmParserInput::knownPropertyKeywords();
                for (auto knownKeyword : knownKeywords)
                {
                    if (fileKeywordSet.count(knownKeyword) > 0)
                    {
                        QString qtKnownKeyword = QString::fromStdString(knownKeyword);
                        QString resultName = this->reservoirData()->results(RifReaderInterface::MATRIX_RESULTS)->makeResultNameUnique(qtKnownKeyword);
                        if (propertyReader.copyPropertyToCaseData(knownKeyword, this->reservoirData(), resultName))
                        {
                            RimEclipseInputProperty* inputProperty = new RimEclipseInputProperty;
                            inputProperty->resultName = resultName;
                            inputProperty->eclipseKeyword = qtKnownKeyword;
                            inputProperty->fileName = filename;
                            inputProperty->resolvedState = RimEclipseInputProperty::RESOLVED;
                            m_inputPropertyCollection->inputProperties.push_back(inputProperty);
                        }
                    }
                }
            }
        }
    }

    for(auto inputProperty : m_inputPropertyCollection->inputProperties())
    {
        if (inputProperty->resolvedState() == RimEclipseInputProperty::UNKNOWN)
        {
            inputProperty->resolvedState = RimEclipseInputProperty::FILE_MISSING;
        }
    }
}