/// /// <summary> * finds all status messages in a jmf and fills the phaseTime with the appropriate data /// * </summary> /// * <param name="jmf"> </param> /// * <returns> vector the vector of all modified phasetime elements </returns> /// public virtual VElement setPhase(JDFJMF jmf) { VElement vMessages = jmf.getMessageVector(null, EnumType.Status); if (vMessages == null) { return(null); } VElement vRet = new VElement(); for (int i = 0; i < vMessages.Count; i++) { JDFMessage status = (JDFMessage)vMessages[i]; VElement devInfos = status.getChildElementVector(ElementName.DEVICEINFO, null, null, true, 0, true); for (int j = 0; j < devInfos.Count; j++) { JDFDeviceInfo devInfo = (JDFDeviceInfo)devInfos[j]; VElement phases = devInfo.getChildElementVector(ElementName.JOBPHASE, null, null, true, 0, true); for (int k = 0; k < phases.Count; k++) { JDFJobPhase phase = (JDFJobPhase)phases[k]; string jobID = phase.getJobID(); if (!jobID.Equals(getParentJDF().getJobID(true))) { continue; } string jobPartID = phase.getJobPartID(); if (!jobPartID.Equals(getParentJDF().getJobPartID(true))) { continue; } JDFPhaseTime pt = setPhase(phase.getStatus(), phase.getStatusDetails(), phase.getPartMapVector(), devInfo.getChildElementVector(ElementName.EMPLOYEE, null)); pt.copyElement(phase.getMISDetails(), null); pt.setEnd(jmf.getTimeStamp()); pt.setStart(phase.getPhaseStartTime()); vRet.Add(pt); } } } vRet.unify(); return(vRet.Count == 0 ? null : vRet); }
/// /// <summary> * test whether a given node has the corect Types and Type Attribute /// * </summary> /// * <param name="testRoot"> the JDF or JMF to test /// * </param> /// * <returns> VElement - the list of matching JDF nodes, null if none found /// * </returns> /// public virtual VElement getMatchingTypeNodeVector(JDFNode testRoot) { VElement vDeviceCap = getChildElementVector(ElementName.DEVICECAP, null, null, false, -1, false); if (vDeviceCap == null || vDeviceCap.IsEmpty()) { return(null); } VElement vRet = new VElement(); for (int i = 0; i < vDeviceCap.Count; i++) { VElement vMatch = ((JDFDeviceCap)vDeviceCap[i]).getMatchingTypeNodeVector(testRoot); if (vMatch != null) { vRet.addAll(vMatch); } } vRet.unify(); return(vRet.IsEmpty() ? null : vRet); }
/// /// <summary> * Gets of jdfRoot a vector of all executable nodes (jdf root or children nodes that this Device may execute) /// * </summary> /// * <param name="jdfRoot"> the node we test </param> /// * <param name="testlists"> testlists that are specified for the State elements (FitsValue_Allowed or FitsValue_Present)<br> /// * Will be used in fitsValue method of the State class. </param> /// * <param name="level"> validation level </param> /// * <returns> VElement - vector of executable JDFNodes </returns> /// public virtual VElement getExecutableJDF(JDFNode docRoot, EnumFitsValue testlists, EnumValidationLevel validationLevel) { VElement vDC = getChildElementVector(ElementName.DEVICECAP, null, null, true, -1, false); if (vDC == null || vDC.IsEmpty()) { return(null); } VElement vn = new VElement(); for (int i = 0; i < vDC.Count; i++) { JDFDeviceCap dc = (JDFDeviceCap)vDC[i]; VElement executableJDF = dc.getExecutableJDF(docRoot, testlists, validationLevel); if (executableJDF != null) { vn.addAll(executableJDF); } } vn.unify(); return(vn.IsEmpty() ? null : vn); }