public virtual void testgetMatchingElementsFromParentSingle() { JDFDoc ddc = new JDFDoc("DevCap"); JDFDoc dde = new JDFDoc("Layout"); JDFDevCap dc = (JDFDevCap)ddc.getRoot(); JDFLayout e = (JDFLayout)dde.getRoot(); JDFDevCap dc1 = dc.appendDevCap(); dc1.setName("Media"); dc1.setMaxOccurs(1); dc1.setMinOccurs(1); for (int i = 0; i < 2; i++) { string mediaType = i == 0 ? "Paper" : "Plate"; e.appendElement("Media").setAttribute("MediaType", mediaType); } VElement devCapVector = dc.getDevCapVector(null, true); VElement vMatch = ((JDFDevCap)devCapVector.item(0)).getMatchingElementsFromParent(e, devCapVector); Assert.AreEqual(2, vMatch.Count); Assert.AreEqual(e.getElement("Media", null, 0), vMatch.item(0)); Assert.AreEqual(e.getElement("Media", null, 1), vMatch.item(1)); }
public void testSeparationList() { JDFDoc doc = new JDFDoc("JDF"); JDFNode root = doc.getJDFRoot(); JDFResourcePool resPool = root.getCreateResourcePool(); KElement kElem = resPool.appendResource(ElementName.COLORANTCONTROL, null, null); Assert.IsTrue(kElem is JDFColorantControl); JDFColorantControl cc = ((JDFColorantControl)kElem); JDFSeparationList co = cc.appendColorantOrder(); VString seps = new VString(StringUtil.tokenize("Cyan Magenta Yellow Black", " ", false)); co.setSeparations(seps); CollectionAssert.AreEqual(co.getSeparations(), seps); VElement vSepSpec = co.getChildElementVector(ElementName.SEPARATIONSPEC, null, null, true, 0, true); Assert.AreEqual(seps.Count, vSepSpec.Count); for (int i = 0; i < vSepSpec.Count; i++) { Assert.IsFalse(vSepSpec.item(i).hasAttribute(AttributeName.CLASS)); Assert.IsFalse(vSepSpec.item(i) is JDFResource); } Assert.AreEqual("Cyan", co.getSeparation(0)); co.removeSeparation("Magenta"); Assert.AreEqual("Cyan", co.getSeparation(0)); Assert.AreEqual("Yellow", co.getSeparation(1)); Assert.AreEqual("Black", co.getSeparation(2)); Assert.IsNull(co.getSeparation(3)); }
public virtual void testgetMatchingElementsFromParentMulti() { JDFDoc ddc = new JDFDoc("DevCap"); JDFDoc dde = new JDFDoc("Layout"); JDFDevCap dc = (JDFDevCap)ddc.getRoot(); JDFLayout e = (JDFLayout)dde.getRoot(); for (int i = 0; i < 2; i++) { JDFDevCap dc1 = dc.appendDevCap(); dc1.setName("Media"); dc1.setMaxOccurs(1); dc1.setMinOccurs(1); JDFEnumerationState es = dc1.appendEnumerationState("MediaType"); string mediaType = i == 0 ? "Paper" : "Plate"; es.setAllowedValueList(new VString(mediaType, null)); e.appendElement("Media").setAttribute("MediaType", mediaType); } VElement devCapVector = dc.getDevCapVector(null, true); for (int i = 0; i < 2; i++) { VElement vMatch = ((JDFDevCap)devCapVector.item(i)).getMatchingElementsFromParent(e, devCapVector); Assert.AreEqual(1, vMatch.Count); Assert.AreEqual(e.getElement("Media", null, i), vMatch.item(0)); } }
/// /// <summary> * get resource defined by <code>resName</code> /// * </summary> /// * <param name="resName"> name of the resource to get; if null get the resource that is linked by the reslink </param> /// * <returns> JDFResource: the element </returns> /// public virtual JDFResource getResource(string resName) { if (resName == null) { JDFResourceLink rl = getResourceLink(); if (rl != null) { return(rl.getTarget()); } VElement v = getChildElementVector(null, null, null, true, 0, false); for (int i = 0; i < v.Count; i++) { KElement e = v.item(i); if (e is JDFResource) { return((JDFResource)e); } } return(null); } JDFResource r = null; KElement e2 = getElement(resName, null, 0); if (e2 is JDFResource) { r = (JDFResource)e2; } else { throw new JDFException("JDFPipeParams.getResource tried to return a JDFElement instead of a JDFResource"); } return(r); }
/// /// <summary> * converts a response to a signal that can be sent individually /// * </summary> /// * <param name="response"> the response to convert </param> /// * <returns> true if successful </returns> /// public virtual bool convertResponse(JDFResponse response, JDFQuery q) { if (response == null) { return(false); } setAttributes(response); VElement elements = response.getChildElementVector(null, null, null, true, 0, true); for (int i = 0; i < elements.Count; i++) { JDFElement element = (JDFElement)elements[i]; copyElement(element, null); } if (q != null) { VElement v = q.getChildElementVector(null, null, null, true, 0, true); for (int i = 0; i < v.Count; i++) { KElement item = v.item(i); if (item is JDFSubscription) { continue; } copyElement(item, null); } } setType(response.getType()); // also fix xsi:type return(true); }
/// /// <summary> * Gets the ResourceLink from the PipeParams element /// * </summary> /// * <returns> VElement: a vector with all resource links in the pool matching the conditions </returns> /// public JDFResourceLink getResourceLink() { VElement v = getChildElementVector(null, null, null, true, 0, false); for (int i = 0; i < v.Count; i++) { KElement e = v.item(i); if (e is JDFResourceLink) { return((JDFResourceLink)e); } } return(null); }
public virtual void testReprintJMF() { testAuditsImageSetting(); statCounter.setActiveNode(null, null, null); string sheet = vsSheet.stringAt(1); VJDFAttributeMap vmP = new VJDFAttributeMap(); JDFAttributeMap attributeMap = new JDFAttributeMap(EnumPartIDKey.SheetName, sheet); attributeMap.put("SignatureName", "Sig1"); attributeMap.put("Separation", vsCMYK.stringAt(3)); attributeMap.put("Side", "Front"); vmP.Add(attributeMap); statCounter.setActiveNode(n, vmP, vRL); string refXM = rlXMOut.getrRef(); string refMedia = rlMediaIn.getrRef(); statCounter.setTrackWaste(refXM, true); statCounter.setTrackWaste(refMedia, false); statCounter.setActiveNode(n, vmP, vRL); statCounter.setWorkType(EnumWorkType.Rework); statCounter.setPhase(EnumNodeStatus.InProgress, "Imaging", EnumDeviceStatus.Running, null); statCounter.addPhase(refMedia, 1, 0, true); statCounter.addPhase(refXM, 1, 0, true); statCounter.setPhase(EnumNodeStatus.InProgress, "Imaging", EnumDeviceStatus.Running, null); JDFDoc d2 = statCounter.getDocJMFResource(); JDFJMF jmf = d2.getJMFRoot(); jmf.convertResponses(null); VElement vSigs = jmf.getMessageVector(JDFMessage.EnumFamily.Signal, JDFMessage.EnumType.Resource); d2.write2File(sm_dirTestDataTemp + "ImageSetResourceReprint_.jmf", 2, false); JDFDoc dStatusJMF = statCounter.getDocJMFPhaseTime(); jmf = dStatusJMF.getJMFRoot(); jmf.convertResponses(null); for (int i = 0; i < vSigs.Count; i++) { jmf.copyElement(vSigs.item(i), null); } dStatusJMF.write2File(sm_dirTestDataTemp + "ImageSetReprint_.jmf", 2, false); // JDFResourceAudit ra= statCounter.setResourceAudit(refMedia, EnumReason.ProcessResult); // JDFProcessRun pr= statCounter.setProcessResult(EnumNodeStatus.Completed); d.write2File(sm_dirTestDataTemp + "ImageSetAmount_Reprint.jdf", 2, false); }
protected internal virtual VString getInvalidTerms(int iMax) { VElement v = getTermVector(null); int vSize = v.Count; VString v2 = new VString(); if (vSize > iMax) // no more than iMax { for (int i = 0; i < vSize; i++) { string strName = v.item(i).LocalName; v2.appendUnique(strName); } } return(v2); }
/// /// <summary> * sets default elements and adds them, if there are less than minOccurs /// * </summary> /// * <param name="node"> /// * the node to set </param> /// * <param name="bAll"> /// * if false, only add if minOccurs>=1 and required=true or a /// * default exists, if true, always create one /// * </param> /// * <returns> boolean true if a default element was created, else false </returns> /// public virtual bool setDefaultsFromCaps(JDFNode node, bool bAll) { bool modified = false; JDFDevCap dc = getDevCap(); if (dc != null) { VElement v = getMatchingElementsFromNode(node); if (v != null) { int size = v.Count; for (int i = 0; i < size; i++) { modified = dc.setDefaultsFromCaps(v.item(i), bAll) || modified; } } } return(modified); }
/// /// <summary> * Method getInvalidElements /// * <p> /// * default: GetInvalidElements(level, true, 999999) /// * </summary> /// * <param name="level"> validation level </param> /// * <param name="bIgnorePrivate"> </param> /// * <param name="nMax"> maximum number of elements to get /// * </param> /// * <returns> VString - vector of names of invalid elements </returns> /// public override VString getInvalidElements(EnumValidationLevel level, bool bIgnorePrivate, int nMax) { VString s = getInvalidElements_JDFElement(level, bIgnorePrivate, nMax); if (s.Count > nMax || hasAttribute(AttributeName.RESOURCENAME)) // multiple // are // allowed // with // resourcename // set { return(s); } VElement v = getChildElementVector(null, null, null, true, 0, false); int size = v.Count; if (size > 1) { // remove anything but resources for (int i = size - 1; i >= 0; i--) { if (!(v[i] is JDFResource)) { v.RemoveAt(i); } } size = v.Count; // must refresh size due to removes // more than one resource --> evil! if (size > 1) { for (int j = 0; j < size; j++) { s.appendUnique(v.item(j).LocalName); } } } return(s); }
public virtual void testAudits() { testPlannedWasteICS(); VString vs = new VString("Cover Sheet1 Sheet2", " "); VElement vRL = new VElement(); vRL.Add(rlOut); vRL.Add(rlMediaIn); for (int j = 0; j < 2; j++) { bool bMinimal = j == 0; for (int i = 0; i < vs.Count; i++) { string sheet = vs.stringAt(i); VJDFAttributeMap vmP = new VJDFAttributeMap(); vmP.Add(new JDFAttributeMap(EnumPartIDKey.SheetName, sheet)); StatusCounter stUtil = new StatusCounter(n, vmP, vRL); string refComp = rlOut.getrRef(); string refMedia = rlMediaIn.getrRef(); stUtil.setTrackWaste(refComp, true); stUtil.setTrackWaste(refMedia, true); if (i == 0) { stUtil.setPhase(EnumNodeStatus.Stopped, "PowerOn", EnumDeviceStatus.Stopped, "PowerOn"); } stUtil.setPhase(EnumNodeStatus.Setup, "FormChange", EnumDeviceStatus.Setup, "FormChange"); stUtil.addPhase(refMedia, 0, 200, true); stUtil.addPhase(refComp, 0, 200, true); stUtil.setPhase(EnumNodeStatus.Setup, "FormChange", EnumDeviceStatus.Setup, "FormChange"); if (i >= 1 && !bMinimal) { JDFResourceAudit ra = stUtil.setResourceAudit(refMedia, EnumReason.ProcessResult); stUtil.setResourceAudit(refComp, EnumReason.ProcessResult); stUtil.clearAmounts(refMedia); stUtil.addPhase(refMedia, 50, 0, true); JDFResourceAudit ra2 = stUtil.setResourceAudit(refMedia, EnumReason.OperatorInput); ra2.setRef(ra); ra2.setDescriptiveName("manual reset to using only 50 sheets because 100 initially were wastes"); } stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); stUtil.addPhase(refMedia, 4000, 0, true); stUtil.addPhase(refComp, 4000, 0, true); stUtil.setPhase(EnumNodeStatus.Cleanup, "Washup during processing", EnumDeviceStatus.Cleanup, "Washup"); stUtil.setPhase(EnumNodeStatus.InProgress, "Waste", EnumDeviceStatus.Running, null); stUtil.addPhase(refMedia, 0, i == 0 ? 40 : 30, true); stUtil.addPhase(refComp, 0, i == 0 ? 40 : 30, true); stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); stUtil.addPhase(refMedia, 1000, 0, true); stUtil.addPhase(refComp, 1000, 0, true); stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); stUtil.addPhase(refMedia, i == 0 ? 5200 : 5400, 0, true); stUtil.addPhase(refComp, i == 0 ? 5200 : 5400, 0, true); stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); JDFResourceAudit ra_1 = stUtil.setResourceAudit(refMedia, EnumReason.ProcessResult); if (!bMinimal) { stUtil.setResourceAudit(refComp, EnumReason.ProcessResult); stUtil.clearAmounts(refMedia); // Java to C# Conversion - Don't know the purpose of this unreachable code. Default to the false value since 1 != 0 //stUtil.addPhase(refMedia, 1 == 0 ? 10100 : 10200, 0, true); stUtil.addPhase(refMedia, 10200, 0, true); JDFResourceAudit ra2 = stUtil.setResourceAudit(refMedia, EnumReason.OperatorInput); ra2.setRef(ra_1); ra2.setDescriptiveName("manual reset to using only 10200 sheets because 100 initially were wates"); } JDFProcessRun pr = stUtil.setProcessResult(EnumNodeStatus.Completed); pr.setDescriptiveName("we even have the utterly useless ProcessRun"); } if (bMinimal) { JDFAuditPool ap = n.getAuditPool(); VElement audits = ap.getAudits(EnumAuditType.PhaseTime, null, null); for (int i = 0; i < audits.Count; i++) { audits.item(i).deleteNode(); } } d.write2File(sm_dirTestDataTemp + "ConvPrintAmount_" + (bMinimal ? "min" : "full") + ".jdf", 2, false); } }
/// /// <summary> * Composes a BugReport in XML form for the given JDFNode 'jdfRoot'. Gives a list of error messages for 'jdfRoot' /// * and every child rejected Node.<br> /// * Returns <code>null</code> if there are no errors. /// * </summary> /// * <param name="jdfRoot"> the node to 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> XMLDoc - XMLDoc output of the error messages. If XMLDoc is null there are no errors. </returns> /// public XMLDoc getBadJDFInfo(JDFNode jdfRoot, EnumFitsValue testlists, EnumValidationLevel level) { 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]; XMLDoc bugReport = dc.getBadJDFInfo(jdfRoot, testlists, level); if (bugReport == null) { return(null); } vn.addAll(bugReport.getRoot().getChildElementVector(null, null, null, true, -1, false)); } int vnSize = vn.Count; if (vnSize == 0) { return(null); } XMLDoc bugReport2 = new XMLDoc("BugReport", null); KElement root = bugReport2.getRoot(); bool bFit = false; for (int i = 0; i < vnSize; i++) { KElement e = vn[i]; if (JDFConstants.TRUE.Equals(e.getAttribute(JDFDeviceCap.FITS_TYPE))) { bFit = true; } } if (bFit) { for (int i = 0; i < vnSize; i++) { KElement e = vn[i]; if (JDFConstants.FALSE.Equals(e.getAttribute(JDFDeviceCap.FITS_TYPE))) { vn[i] = null; } } } for (int i = 0; i < vnSize; i++) { if (vn[i] != null) { root.moveElement(vn.item(i), null); } } return(bugReport2); }
/// /// * <param name="testRoot"> </param> /// * <param name="testlists"> </param> /// * <param name="level"> </param> /// * <param name="mrp"> </param> /// * <param name="irp"> </param> /// * <param name="resLinkPool"> </param> /// * <param name="goodElems"> </param> /// * <param name="badElems"> </param> /// * <param name="devCaps"> /// * @return </param> /// public virtual void analyzeDevCaps(KElement testRoot, EnumFitsValue testlists, EnumValidationLevel level, KElement mrp, KElement irp, SupportClass.HashSetSupport goodElems, Hashtable badElems, bool ignoreExtensions) { EnumAvailability av = getModuleAvailability(); KElement xpathRoot = testRoot; VElement vElemResources = null; if (testRoot is JDFNode) { JDFNode jdfNode = (JDFNode)testRoot; vElemResources = getMatchingElementsFromNode(jdfNode); xpathRoot = jdfNode.getResourceLinkPool(); if (xpathRoot == null) { xpathRoot = testRoot; } } else { vElemResources = getMatchingElementsFromJMF((JDFMessage)testRoot); } int svElemResources = vElemResources == null ? 0 : vElemResources.Count; EnumContext context = getContext(); KElement r = null; if (EnumValidationLevel.isRequired(level) && svElemResources < getMinOccurs() && EnumAvailability.Installed.Equals(av)) { if (EnumContext.Element.Equals(context) || EnumContext.JMF.Equals(context)) { r = mrp.appendElement("MissingElement"); r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } else { EnumUsage linkUsage = getLinkUsage(); string procUsage = getProcessUsage(); r = mrp.appendElement("MissingResourceLink"); if (linkUsage != null) { r.setAttribute("Usage", linkUsage.getName()); } if (procUsage != null && procUsage.Length > 0) { r.setAttribute("ProcessUsage", procUsage); } r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } r.setAttribute("Name", getName()); r.setAttribute("CapXPath", getName()); r.setAttribute("Occurrences", svElemResources, null); r.setAttribute("MinOccurs", getMinOccurs(), null); } else if (svElemResources > getMaxOccurs() || !EnumAvailability.Installed.Equals(av)) { if (context.Equals(EnumContext.Element) || context.Equals(EnumContext.JMF)) { r = irp.appendElement("ManyElement"); r.setAttribute("XPath", testRoot.buildXPath(null, 1) + "/" + getName()); } else { EnumUsage linkUsage = getLinkUsage(); string procUsage = getProcessUsage(); r = irp.appendElement("ManyResourceLink"); if (linkUsage != null) { r.setAttribute("Usage", linkUsage.getName()); } if (procUsage != null && procUsage.Length > 0) { r.setAttribute("ProcessUsage", procUsage); } r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } r.setAttribute("Name", getName()); r.setAttribute("CapXPath", getName()); r.setAttribute("Occurrences", svElemResources, null); r.setAttribute("MaxOccurs", getMaxOccurs(), null); r.setAttribute("Availability", av == null ? "None" : av.getName()); } if (vElemResources != null) { for (int j = 0; j < svElemResources; j++) { KElement elem = vElemResources.item(j); if (!goodElems.Contains(elem)) { KElement report = devCapReport(elem, testlists, level, ignoreExtensions, irp); // InvalidResources if (report == null) { goodElems.Add(elem); KElement badReport = (KElement)badElems[elem]; if (badReport != null) { badReport.deleteNode(); } } else { badElems.Add(elem, report); } } } } }