void InputVariableRecord::constructRelatedRecords(const analysis::InputVariable& inputVariable) { AttributeVector attributes, dbAttributes; InputVariableRecord copyOfThis(getImpl<detail::InputVariableRecord_Impl>()); if (analysis::OptionalUncertaintyDescription dbUDesc = uncertaintyDescription()) { dbAttributes = dbUDesc->cast<analysis::GenericUncertaintyDescription>().attributes(); } if (analysis::OptionalUncertaintyDescription udesc = inputVariable.uncertaintyDescription()) { attributes = udesc->cast<analysis::GenericUncertaintyDescription>().attributes(); } for (const Attribute& attribute : attributes) { // find in dbOptions auto dbIt = std::find_if(dbAttributes.begin(),dbAttributes.end(), std::bind(uuidsEqual<Attribute,Attribute>,std::placeholders::_1,attribute)); // if not there, or if different versionUUID, save it if ((dbIt == dbAttributes.end()) || (attribute.versionUUID() != dbIt->versionUUID())) { AttributeRecord udescAttributeRecord(attribute,copyOfThis); } // if there, erase from dbOptions if (dbIt != dbAttributes.end()) { dbAttributes.erase(dbIt); } } // any attributes left in dbAttributes should be removed from the database ProjectDatabase database = projectDatabase(); for (const Attribute& toRemove : dbAttributes) { AttributeRecord dbUDescAttributeRecord = database.getObjectRecordByHandle<AttributeRecord>(toRemove.uuid()).get(); database.removeRecord(dbUDescAttributeRecord); } }
QVariant InputVariable_Impl::toVariant() const { QVariantMap inputVariableData = AnalysisObject_Impl::toVariant().toMap(); if (OptionalUncertaintyDescription udesc = uncertaintyDescription()) { inputVariableData["uncertainty_description"] = analysis::detail::toVariant(udesc.get()); } return QVariant(inputVariableData); }
analysis::MeasureGroup MeasureGroupRecord_Impl::measureGroup() const { analysis::MeasureVector measures; for (const MeasureRecord& measureRecord : measureRecords(false)) { measures.push_back(measureRecord.measure()); } return analysis::MeasureGroup(handle(), uuidLast(), name(), displayName(), description(), uncertaintyDescription(), measures); }
analysis::RubyContinuousVariable RubyContinuousVariableRecord_Impl::rubyContinuousVariable() const { ruleset::OSArgument argument = osArgumentRecord().osArgument(); analysis::RubyMeasure measure = rubyMeasureRecord().rubyMeasure(); return analysis::RubyContinuousVariable(handle(), uuidLast(), name(), displayName(), description(), uncertaintyDescription(), minimum(), maximum(), increment(), nSteps(), argument, measure); }