UUID ComponentData_Impl::createVersionUUID() { bool ok = setString(OS_ComponentDataFields::VersionUUID,toString(createUUID())); OS_ASSERT(ok); ok = setInt(OS_ComponentDataFields::VersionTimestamp,time(nullptr)); OS_ASSERT(ok); return versionUUID(); }
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 AnalysisObject_Impl::toVariant() const { QVariantMap analysisObjectData; analysisObjectData["uuid"] = toQString(removeBraces(uuid())); analysisObjectData["version_uuid"] = toQString(removeBraces(versionUUID())); std::string str = name(); if (!str.empty()) { analysisObjectData["name"] = toQString(str); } str = displayName(); if (!str.empty()) { analysisObjectData["display_name"] = toQString(str); } str = description(); if (!str.empty()) { analysisObjectData["description"] = toQString(str); } return QVariant(analysisObjectData); }
bool AnalysisObject_Impl::uuidAndVersionEqual(const AnalysisObject& other) const { return ((uuid() == other.uuid()) && (versionUUID() == other.versionUUID())); }