/** * @param xmlSpecification * @param userGroup * @return */ public ValidationReport Validate(String xmlSpecification, String userGroup) { final String methodName = "Validate"; Logfile.WriteCalled(logLevel, STR_ClassName, methodName); ValidationReport validationReport = null; try { if (this.labExperimentEngines == null) { throw new NullPointerException(STRERR_LabExperimentEngines); } /* * Pass to the each experiment engine in turn to validate until validation is successful. * It may be possible that the LabEquipment for a particular LabExperimentEngine may be offline. */ for (int i = 0; i < this.labExperimentEngines.length; i++) { LabExperimentEngine labExperimentEngine = this.labExperimentEngines[i]; if (labExperimentEngine == null) { throw new NullPointerException(String.format(STRERR_LabExperimentEngineUnitId_arg, 0)); } /* * Check if the LabExperimentEngine is online before trying to use it to validate */ LabStatus labStatus = labExperimentEngine.GetLabStatus(); if (labStatus.isOnline() == false) { continue; } /* * Validate the specification */ validationReport = labExperimentEngine.Validate(xmlSpecification); if (validationReport.isAccepted() == true) { break; } } } catch (Exception ex) { Logfile.WriteError(ex.toString()); validationReport = new ValidationReport(ex.toString()); } Logfile.WriteCompleted( logLevel, STR_ClassName, methodName, String.format( STRLOG_Accepted_arg, (validationReport != null) ? validationReport.isAccepted() : false)); return validationReport; }