| 217 | } |
| 218 | |
| 219 | void ModelLoader::addToTree(std::shared_ptr<ModelEntry> model, |
| 220 | std::map<std::pair<QString, QString>, QString>* inheritances) |
| 221 | { |
| 222 | std::set<QString> exclude; |
| 223 | exclude.insert(QStringLiteral("Name")); |
| 224 | exclude.insert(QStringLiteral("UUID")); |
| 225 | exclude.insert(QStringLiteral("URL")); |
| 226 | exclude.insert(QStringLiteral("Description")); |
| 227 | exclude.insert(QStringLiteral("DOI")); |
| 228 | exclude.insert(QStringLiteral("Inherits")); |
| 229 | |
| 230 | auto yamlModel = model->getModel(); |
| 231 | if (!model->getLibrary()->isLocal()) { |
| 232 | throw InvalidLibrary(); |
| 233 | } |
| 234 | auto library = model->getLibrary(); |
| 235 | auto base = model->getBase().toStdString(); |
| 236 | auto name = model->getName(); |
| 237 | auto directory = model->getDirectory(); |
| 238 | auto uuid = model->getUUID(); |
| 239 | |
| 240 | QString description = yamlValue(yamlModel[base], "Description", ""); |
| 241 | QString url = yamlValue(yamlModel[base], "URL", ""); |
| 242 | QString doi = yamlValue(yamlModel[base], "DOI", ""); |
| 243 | |
| 244 | Model::ModelType type = |
| 245 | (base == "Model") ? Model::ModelType_Physical : Model::ModelType_Appearance; |
| 246 | |
| 247 | Model finalModel(library, type, name, directory, uuid, description, url, doi); |
| 248 | |
| 249 | // Add inheritance list |
| 250 | if (yamlModel[base]["Inherits"]) { |
| 251 | auto inherits = yamlModel[base]["Inherits"]; |
| 252 | for (auto it = inherits.begin(); it != inherits.end(); it++) { |
| 253 | QString nodeName = QString::fromStdString((*it)["UUID"].as<std::string>()); |
| 254 | |
| 255 | finalModel.addInheritance(nodeName); |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | // Add property list |
| 260 | auto yamlProperties = yamlModel[base]; |
| 261 | for (auto it = yamlProperties.begin(); it != yamlProperties.end(); it++) { |
| 262 | std::string propName = it->first.as<std::string>(); |
| 263 | if (!exclude.contains(QString::fromStdString(propName))) { |
| 264 | // showYaml(it->second); |
| 265 | auto yamlProp = yamlProperties[propName]; |
| 266 | auto propDisplayName = yamlValue(yamlProp, "DisplayName", ""); |
| 267 | auto propType = yamlValue(yamlProp, "Type", ""); |
| 268 | auto propUnits = yamlValue(yamlProp, "Units", ""); |
| 269 | auto propURL = yamlValue(yamlProp, "URL", ""); |
| 270 | auto propDescription = yamlValue(yamlProp, "Description", ""); |
| 271 | // auto inherits = yamlValue(yamlProp, "Inherits", ""); |
| 272 | |
| 273 | ModelProperty property(QString::fromStdString(propName), |
| 274 | propDisplayName, |
| 275 | propType, |
| 276 | propUnits, |
no test coverage detected