@openscope/validator
Version:
A CLI used to validate an airport definition file used in the [openscope](http://openscope.co) ATC Simulator
63 lines (50 loc) • 1.63 kB
JavaScript
const ValidatorAbstract = require('./ValidatorAbstract');
const findUndefinedFixesInAirway = require('../findUndefinedFixes').findUndefinedFixesInAirway;
const IAirway = require('./types/i-airway');
/**
*
*
"airways": {
"J70": ["HQM", "ELMAA", "SEA", "NORMY", "BLUIT", "EPH", "MLP"],
"J523": ["TOU", "ARRIE", "SEA", "WANTA", "LTJ", "IMB"]
}
*
*/
class AirwaysValidator extends ValidatorAbstract {
constructor(json, fixList) {
super('airways', json);
if (!fixList) {
return;
}
this._fixList = Object.keys(fixList);
}
validate() {
this.validateObj();
this.validateInterfaceObj();
this.validateAirwayFixes();
}
validateObj() {
super.validateObj();
}
validateInterfaceObj() {
super.validateInterfaceObj(IAirway);
}
validateAirwayFixes() {
if (this._fixList.length === 0 || !this.isValid) {
return this;
}
for (let procedureIcao in this._data) {
const undefinedFixes = findUndefinedFixesInAirway(this._data[procedureIcao], this._fixList);
if (undefinedFixes.length === 0) {
continue;
}
const errorMessageStr = `${ERROR.PROCEDURE.UNDEFINED_FIX.BASE_MESSAGE} SID - ${procedureIcao}: ${undefinedFixes.join(', ')}`;
const errorMessage = new MessageType({
message: errorMessageStr,
level: ERROR.PROCEDURE.UNDEFINED_FIX.LEVEL
});
this.registerError(errorMessage);
}
}
}
module.exports = AirwaysValidator;