Name
global.ProjectRelationsValidator
Description
Project Relations Validator for Project Diagnosis
Script
var ProjectRelationsValidator = Class.create();
ProjectRelationsValidator.prototype = {
initialize: function(projectData) {
this.projectData = projectData;
this.invalidRelations = [];
this.validateInvalidRelations();
},
validateInvalidRelations: function() {
var arrayUtil = new ArrayUtil();
var tasks = this.projectData.getTasks();
var taskSysIdes = tasks['sys_ids'];
var relations = this.projectData.getRelations();
var relationSysIdes = relations['sys_ids'];
for (var i = 0; i < relationSysIdes.length; i++) {
var relation = relations[relationSysIdes[i]];
if( JSUtil.nil(relation.parent) ) {
relation.message = 'Empty predecessor';
this.invalidRelations.push(relation);
} else if(JSUtil.nil(relation.child)) {
relation.message = 'Empty successor';
this.invalidRelations.push(relation);
} else {
if(!arrayUtil.contains(taskSysIdes, relation.parent)) {
relation.message = 'Invalid predecessor';
this.invalidRelations.push(relation);
} else if(!arrayUtil.contains(taskSysIdes, relation.child)) {
relation.message = 'Invalid successor';
this.invalidRelations.push(relation);
} else if(relation.parent == relation.child) {
relation.message = 'Cyclic Relation';
this.invalidRelations.push(relation);
} else if(JSUtil.nil(relation.sub_type)) {
relation.message = 'Invalid Sub Type';
this.invalidRelations.push(relation);
}
}
}
},
getInvalidRelations: function() {
return this.invalidRelations;
},
hasInvalidRelations: function() {
if ( this.invalidRelations.length == 0 )
return false;
else
return true;
},
type: 'ProjectRelationsValidator'
};
Sys ID
73f731db9f35220088265bb0657fcf70