void Package::autocorrectSpecs() { if(!flagActive(HasName)) { setConfigVar(Name, "Undefined Name"); } if(!flagActive(HasID)) { setConfigVar(ID, "---"); } if(!flagActive(HasAuthor)) { setConfigVar(Author, "No author given"); } }
// Some simple input error checking. Allows config to have e.g. any of the // following with same result: MATLAB, Matlab, matlab, 1. void Config::correctValues() { std::string value = getConfigVar("loadflowsimulator"); if(value.compare("Testing") == 0 || value.compare("testing") == 0 || value.compare("0") == 0) setConfigVar("loadflowsimulator", "testing"); else if(value.compare("Matlab") == 0 || value.compare("MATLAB") == 0 || value.compare("matlab") == 0 || value.compare("1") == 0) setConfigVar("loadflowsimulator", "matlab"); else if(value.compare("DIGSILENT") == 0 || value.compare("DigSilent") == 0 || value.compare("digsilent") == 0 || value.compare("2") == 0) setConfigVar("loadflowsimulator", "digsilent"); value = getConfigVar("chargingalgorithm"); if(value.compare("Uncontrolled") == 0 || value.compare("uncontrolled") == 0 || value.compare("0") == 0) setConfigVar("chargingalgorithm", "uncontrolled"); else if(value.compare("EqualShare") == 0 || value.compare("equalshare") == 0 || value.compare("1") == 0) setConfigVar("chargingalgorithm", "equalshare"); else if(value.compare("Distributed") == 0 || value.compare("distributed") == 0 || value.compare("2") == 0) setConfigVar("chargingalgorithm", "distributed"); else if(value.compare("TOU") == 0 || value.compare("tou") == 0 || value.compare("4") == 0) setConfigVar("chargingalgorithm", "TOU"); else if(value.compare("OPTIMAL1") == 0 || value.compare("Optimal1") == 0 || value.compare("optimal1") == 0 || value.compare("5") == 0) setConfigVar("chargingalgorithm", "optimal1"); else if(value.compare("OPTIMAL2") == 0 || value.compare("Optimal2") == 0 || value.compare("optimal2") == 0 || value.compare("6") == 0) setConfigVar("chargingalgorithm", "optimal2"); }
void Package::loadSpecs(const std::string &yamlString, bool autocorrect) { if(yamlString.length() < 5) m_isValid = false; activateFlag(SpecsLoaded); YAML::Node specs = YAML::Load(yamlString); if(specs["PPKPath"]) { setConfigVar(PPKPath, specs["PPKPath"].as<std::string>()); } if(specs["Author"]) { setConfigVar(Author, specs["Author"].as<std::string>()); } if(specs["Name"]) { setConfigVar(Name, specs["Name"].as<std::string>()); } if(specs["Version"]) { setConfigVar(Version, specs["Version"].as<std::string>()); } if(specs["ID"]) { setConfigVar(ID, specs["ID"].as<std::string>()); } if(specs["IsInMainGamesList"]) { activateFlag(IsInMainGamesList); } if(autocorrect) { autocorrectSpecs(); } }
void Package::fromDirectory(const std::string &dir) { LOG(INFO) << "Reading package from directory \"" << dir << "\"."; setConfigVar(Directory, dir); activateFlag(HasDirectory); QFile specsFile(QString::fromStdString(dir + "/PackageSpecs.yml")); specsFile.open(QFile::ReadOnly); if(specsFile.isReadable()) { loadSpecs(specsFile.readAll().toStdString()); } else { LOG(WARNING) << "The package in the directory \"" << dir << "\" has no \"PackageSpecs.yml\" file!"; m_isValid = false; } }