refs #720, allow to publish when there are errors, but some models pass validation

* return valid and invalid models
* return value "success" when there are any valid models
This commit is contained in:
Klaus Basan
2016-08-12 22:07:08 +02:00
committed by Mathew Sutcliffe
parent d10fe5ad18
commit da343d81c1
5 changed files with 43 additions and 38 deletions

View File

@@ -525,17 +525,18 @@ namespace BlackMisc
CStatusMessageList CAircraftModelList::validateForPublishing() const
{
CAircraftModelList invalidModels;
return validateForPublishing(invalidModels);
CAircraftModelList validModels;
return validateForPublishing(validModels, invalidModels);
}
CStatusMessageList CAircraftModelList::validateForPublishing(CAircraftModelList &validateModels) const
CStatusMessageList CAircraftModelList::validateForPublishing(CAircraftModelList &validModels, CAircraftModelList &invalidModels) const
{
if (this->isEmpty()) { return CStatusMessageList(); }
CStatusMessageList msgs;
for (const CAircraftModel &model : *this)
{
const CStatusMessageList msgsModel(model.validate(false));
CStatusMessage msgModel(msgsModel.toSingleMessage());
const CStatusMessage msgModel(msgsModel.toSingleMessage());
QStringList subMsgs;
if (!model.getDistributor().hasValidDbKey()) { subMsgs << "No distributor from DB"; }
@@ -546,16 +547,20 @@ namespace BlackMisc
// for color codes we do not need to check
if (!model.getLivery().getAirlineIcaoCode().hasValidDbKey()) { subMsgs << "No airline ICAO from DB"; }
}
CStatusMessage msgDb(CStatusMessage::SeverityError, subMsgs.join(", "));
const CStatusMessage msgDb(CStatusMessage::SeverityError, subMsgs.join(", "));
CStatusMessage singleMsg(CStatusMessageList({msgModel, msgDb}).toSingleMessage());
if (!singleMsg.isWarningOrAbove()) { continue; }
if (!singleMsg.isWarningOrAbove())
{
validModels.push_back(model);
continue;
}
if (model.hasModelString())
{
singleMsg.prependMessage(model.getModelString() + ": ");
}
msgs.push_back(singleMsg);
validateModels.push_back(model);
invalidModels.push_back(model);
}
return msgs;
}