public virtual void testWasteAmount() { VJDFAttributeMap singleMap = new VJDFAttributeMap(); singleMap.Add(xpMedia.getPartMapVector(false)[0]); MISCPGoldenTicket gt = new MISCPGoldenTicket(2, EnumVersion.Version_1_3, 2, 2, false, singleMap); gt.good = 1000; gt.waste = 100; gt.assign(null); n = gt.getNode(); JDFComponent c = (JDFComponent)n.getResource(ElementName.COMPONENT, null, 0); JDFMedia m = (JDFMedia)n.getResource(ElementName.MEDIA, null, 0); JDFResourceLink rl = n.getLink(c, null); JDFResourceLink rlMedia = n.getLink(m, null); VElement vRL = new VElement(); vRL.Add(rl); vRL.Add(rlMedia); sc = new StatusCounter(null, null, null); sc.setTrackWaste(rl.getrRef(), true); sc.setTrackWaste(rlMedia.getrRef(), true); sc.setActiveNode(n, c.getPartMapVector(false), vRL); Assert.AreEqual(100, sc.getPlannedWaste(rlMedia.getrRef()), 0); Assert.AreEqual(1000, sc.getPlannedAmount(rl.getrRef()), 0); }
public virtual void testDirectProof() { n.setXMLComment("Example workflow with initioal warmup phase, one direct proof and 100 copies of 10 sheets each.\n" + "The direct proof is acceptable and included in the good output"); digiParams.setDirectProofAmount(1); digiParams.setXMLComment("1 initial proof is requested"); rlComp.setAmount(100, null); JDFAuditPool ap = n.getAuditPool(); VElement vRL = new VElement(); vRL.Add(rlComp); vRL.Add(rlMedia); StatusCounter stCounter = new StatusCounter(n, null, vRL); stCounter.setDeviceID("MyDevice"); string mediaRef = rlMedia.getrRef(); stCounter.setTrackWaste(mediaRef, true); string compRef = rlComp.getrRef(); stCounter.setTrackWaste(compRef, false); doc.write2File(sm_dirTestDataTemp + "DigiPrintAmount_initial.jdf", 2, false); stCounter.setPhase(EnumNodeStatus.InProgress, "Waste", EnumDeviceStatus.Running, null); ap.getLastPhase(null, null).setXMLComment("Phase where warm up waste is produced"); stCounter.addPhase(mediaRef, 0, 2, true); stCounter.addPhase(compRef, 0, 20, true); stCounter.setPhase(EnumNodeStatus.InProgress, "Waste", EnumDeviceStatus.Running, null); stCounter.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); stCounter.addPhase(mediaRef, 1, 0, true); stCounter.addPhase(compRef, 10, 0, true); stCounter.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); ap.getLastPhase(null, null).setXMLComment("Phase where 1 proof is produced"); stCounter.setPhase(EnumNodeStatus.Stopped, "WaitForApproval", EnumDeviceStatus.Stopped, null); ap.getLastPhase(null, null).setXMLComment("Phase where the proof is evaluated while the device is stopped"); stCounter.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); stCounter.addPhase(mediaRef, 99, 0, true); stCounter.addPhase(compRef, 990, 0, true); stCounter.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null); ap.getLastPhase(null, null).setXMLComment("Phase where the 100 copies are produced"); stCounter.setPhase(EnumNodeStatus.Completed, "Idle", EnumDeviceStatus.Idle, null); stCounter.setResourceAudit(mediaRef, EnumReason.ProcessResult); doc.write2File(sm_dirTestDataTemp + "DigiPrintProof_final.jdf", 2, false); }
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); }
/// /// * <param name="amounts"> </param> /// * <param name="jmfRes"> </param> /// private void generateResourceSignal(AmountBag[] amounts, JDFJMF jmfRes) { if (amounts != null) { VElement vResResourceInfo = getVResLink(amounts, 3); JDFSignal sig = jmfRes.appendSignal(EnumType.Resource); JDFResourceQuParams rqp = sig.appendResourceQuParams(); rqp.setJDF(m_Node); rqp.setExact(false); bool bAllExact = true; for (int i = 0; i < vResResourceInfo.Count; i++) { JDFResourceInfo ri = sig.appendResourceInfo(); JDFResourceLink rl = (JDFResourceLink)vResResourceInfo[i]; LinkAmount la = getLinkAmount(rl.getrRef()); bool bExact = la.bCopyResInfo; bAllExact = bAllExact && bExact; rqp.setExact(bExact); ri.setLink(rl, rqp); } rqp.setExact(bAllExact); } }
/// /// <summary> * sets all relevant parameters of this to the values specified in resourceLink or its linked resource or JDF node /// * </summary> /// * <param name="resourceLink"> the resourceLink to extract the information from </param> /// * <param name="rqp"> parameters </param> /// public virtual void setLink(JDFResourceLink resourceLink, JDFResourceQuParams rqp) { if (resourceLink == null) { return; } JDFAmountPool ap = resourceLink.getAmountPool(); if (ap != null) { copyElement(ap, null); } else { if (resourceLink.hasAttribute(AttributeName.ACTUALAMOUNT)) { setActualAmount(resourceLink.getActualAmount(null)); } if (resourceLink.hasAttribute(AttributeName.AMOUNT)) { setAmount(resourceLink.getAmount(null)); } } setProcessUsage(resourceLink.getEnumProcessUsage()); JDFResource r = resourceLink.getTarget(); if (r == null && rqp != null) { rqp.setExact(false); } bool bExact = rqp == null ? false : rqp.getExact(); if (!bExact || r == null) // if we do not have a resource let's limp // along and provide as much as we have { setResourceName(resourceLink.getLinkedResourceName()); setAttribute(AttributeName.RESOURCEID, resourceLink.getrRef()); EnumUsage usage = resourceLink.getUsage(); if (usage != null) { setAttribute(AttributeName.USAGE, usage.getName()); } if (r != null && r.hasAttribute(AttributeName.PRODUCTID)) { setProductID(r.getProductID()); } } else { // create a copy of the resource in the original jdf JDFResource rr = (JDFResource)r.getParentNode_KElement().copyElement(r, null); rr.inlineRefElements(null, null, true); // move resource copy from the original node into this document moveElement(rr, null); } }
/// /// <summary> * set copying the resource into resourceInfo on or off for the resourcelink rl /// * </summary> /// * <param name="rl"> the resourcelink to the resource to copy </param> /// * <param name="b"> tracking on or off </param> /// public virtual void setCopyResInResInfo(JDFResourceLink rl, bool b) { LinkAmount la = getLinkAmount(rl.getrRef()); if (la != null) { la.bCopyResInfo = b; } }
/// /// <summary> * set waste tracking on or off for the resourcelink rl /// * </summary> /// * <param name="rl"> the resourcelink to the resource to track </param> /// * <param name="b"> tracking on or off </param> /// public virtual void setTrackWaste(JDFResourceLink rl, bool b) { LinkAmount la = getLinkAmount(rl.getrRef()); if (la != null) { la.bTrackWaste = b; } }
public override void setUp() { base.setUp(); JDFElement.setLongID(false); d = new JDFDoc("JDF"); n = d.getJDFRoot(); n.appendXMLComment("Example to illustrate JDF 1.3 Base and MIS compatible amount handling", null); n.setType(EnumType.Combined); inMedia = (JDFMedia)n.addResource(ElementName.MEDIA, null, EnumUsage.Input, null, null, null, null); outXM = (JDFExposedMedia)n.addResource(ElementName.EXPOSEDMEDIA, EnumUsage.Output); outXM.refMedia(inMedia); n.addTypes(EnumType.Interpreting); n.addTypes(EnumType.Rendering); n.addTypes(EnumType.ImageSetting); n.setJobID("RIP-job"); rlXMOut = n.getLink(outXM, null); rlMediaIn = n.getLink(inMedia, null); inMedia.setProductID("Media-ProductID"); inMedia.setMediaType(EnumMediaType.Plate); inMedia.setMediaTypeDetails("Aluminum"); vRL = new VElement(); vRL.Add(rlMediaIn); vRL.Add(rlXMOut); JDFExposedMedia xmPart = (JDFExposedMedia)outXM.addPartition(EnumPartIDKey.SignatureName, "Sig1"); vsSheet = new VString("Cover Sheet1 Sheet2", " "); vsCMYK = new VString("Cyan Magenta Yellow Black Spot1", " "); VElement v = xmPart.addPartitions(EnumPartIDKey.SheetName, vsSheet); for (int i = 0; i < v.Count; i++) { JDFResource xmPart2 = (JDFResource)v[i]; xmPart2.getCreatePartition(EnumPartIDKey.Side, "Front", null).addPartitions(EnumPartIDKey.Separation, vsCMYK); // xmPart2.getCreatePartition(EnumPartIDKey.Side,"Back",null). // addPartitions(EnumPartIDKey.Separation, vsCMYK); } statCounter = new StatusCounter(n, null, vRL); statCounter.setDeviceID("Rip-DeviceID"); statCounter.setCopyResInResInfo(rlMediaIn.getrRef(), true); }
/// /// * <param name="good"> </param> /// * <param name="waste"> </param> /// protected internal void runSinglePhase(int pgood, int pwaste, bool bOutAvail, bool bFirst) { VElement vResLinks = theExpandedNode.getResourceLinks(null); if (vResLinks != null) { int siz = vResLinks.Count; for (int i = 0; i < siz; i++) { int _good = pgood; JDFResourceLink rl = (JDFResourceLink)vResLinks[i]; // only consume input for first set of runs if (!bFirst && EnumUsage.Input.Equals(rl.getUsage())) { _good = 0; } theStatusCounter.addPhase(rl.getrRef(), _good, pwaste, true); } } }
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); } }
public virtual void testAmount() { rlComp.setAmount(20, null); rlComp.setDescriptiveName("The link points to 20 planned and 20 good + 2 Waste brochures"); JDFMiscConsumable mc = (JDFMiscConsumable)n.appendMatchingResource(ElementName.MISCCONSUMABLE, EnumProcessUsage.AnyInput, null); mc.setResStatus(EnumResStatus.Available, false); mc.setConsumableType("FooBar"); mc.setUnit("Fnarfs"); mc.setDescriptiveName("FooBars are always measured in Fnarfs"); JDFResourceLink rlmc = n.getLink(mc, null); rlmc.setAmount(42, null); rlmc.setDescriptiveName("The link points to 42 actual FooBars"); JDFUsageCounter uc = (JDFUsageCounter)n.appendMatchingResource(ElementName.USAGECOUNTER, EnumProcessUsage.AnyInput, null); uc.setResStatus(EnumResStatus.Available, false); uc.setCounterTypes(new VString("Click", " ")); JDFResourceLink rlu = n.getLink(uc, null); rlu.setAmount(200, null); rlu.setDescriptiveName("The link points to 200 actual clicks"); rlMedia.setAmount(100, null); rlMedia.setDescriptiveName("The link points to 100 actual sheets"); Thread.Sleep(1000); comp.setResStatus(EnumResStatus.Available, true); VElement vRL = new VElement(); vRL.Add(rlComp); vRL.Add(rlu); vRL.Add(rlMedia); vRL.Add(rlmc); StatusUtil stUtil = new StatusUtil(n, null, vRL); stUtil.setDeviceID("MyDevice"); stUtil.setTrackWaste(rlMedia, true); stUtil.setTrackWaste(rlComp, true); stUtil.setCopyResInResInfo(rlu, true); doc.write2File(sm_dirTestDataTemp + "DigiPrintAmount_initial.jdf", 2, false); AmountBag[] bags = new AmountBag[vRL.Count]; bags[0] = new AmountBag(rlComp.getrRef()); bags[1] = new AmountBag(rlu.getrRef()); bags[2] = new AmountBag(rlMedia.getrRef()); bags[3] = new AmountBag(rlmc.getrRef()); stUtil.setPhase(EnumNodeStatus.InProgress, "Waste", EnumDeviceStatus.Running, null, bags); JDFDoc docStatusJMF = stUtil.getDocJMFPhaseTime(); docStatusJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountStatus0.jmf", 2, false); JDFDoc docResJMF = stUtil.getDocJMFResource(); docResJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountResource0.jmf", 2, false); bags[0].addPhase(0, 2, true); bags[1].addPhase(0, 20, true); bags[2].addPhase(0, 10, true); bags[3].addPhase(0, 0, true); stUtil.setPhase(EnumNodeStatus.InProgress, "Waste", EnumDeviceStatus.Running, null, bags); docStatusJMF = stUtil.getDocJMFPhaseTime(); docStatusJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountStatus1.jmf", 2, false); docResJMF = stUtil.getDocJMFResource(); docResJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountResource1.jmf", 2, false); bags[0].addPhase(15, 0, true); bags[1].addPhase(150, 0, true); bags[2].addPhase(75, 0, true); bags[3].addPhase(32, 0, true); stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null, bags); docStatusJMF = stUtil.getDocJMFPhaseTime(); docStatusJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountStatus2.jmf", 2, false); docResJMF = stUtil.getDocJMFResource(); docResJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountResource2.jmf", 2, false); bags[0].addPhase(5, 0, false); bags[1].addPhase(50, 0, false); bags[2].addPhase(25, 0, false); bags[3].addPhase(11, 0, false); stUtil.setPhase(EnumNodeStatus.InProgress, "Good", EnumDeviceStatus.Running, null, bags); docStatusJMF = stUtil.getDocJMFPhaseTime(); docStatusJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountStatus3.jmf", 2, false); docResJMF = stUtil.getDocJMFResource(); docResJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountResource3.jmf", 2, false); bags[0].addPhase(0, 0, true); bags[1].addPhase(0, 0, true); bags[2].addPhase(0, 0, true); bags[3].addPhase(0, 0, true); stUtil.setPhase(EnumNodeStatus.Completed, "Idle", EnumDeviceStatus.Idle, null, bags); docStatusJMF = stUtil.getDocJMFPhaseTime(); docStatusJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountStatus4.jmf", 2, false); docResJMF = stUtil.getDocJMFResource(); docResJMF.write2File(sm_dirTestDataTemp + "DigiPrintAmountResource4.jmf", 2, false); doc.write2File(sm_dirTestDataTemp + "DigiPrintAmount_final.jdf", 2, false); }
/// /// <summary> * apply the parameters in this to all appropriate resources in parentNode or one of parentNode's children /// * </summary> /// * <param name="parentNode"> the node to search in TODO implement resource handling </param> /// public virtual void applyPipeToNode(JDFNode parentNode) { if (parentNode == null) { return; } VElement vNodes = parentNode.getvJDFNode(null, null, false); int size = vNodes.Count; for (int i = 0; i < size; i++) { JDFNode node = (JDFNode)vNodes[i]; if (!matchesNode(node)) { continue; } JDFElement.EnumNodeStatus status = getStatus(); // TODO: set // Status node.setStatus(status); // final boolean isIncremental = (getUpdateMethod () == // EnumUpdateMethod.Incremental); double dAmount = -1.0; JDFResourceLink rl = getResourceLink(); if (rl != null) { JDFResourceLink rlNode = node.getLink(0, rl.Name, new JDFAttributeMap(AttributeName.RREF, rl.getrRef()), null); if (rlNode == null) { throw new JDFException("Applying pipeparams to inconsistent node: missing resourcelink: " + rl.Name); } VJDFAttributeMap vMap = rl.getPartMapVector(); if (vMap == null) { vMap = new VJDFAttributeMap(); vMap.Add(null); } for (int j = 0; j < vMap.Count; j++) { JDFAttributeMap map = vMap[j]; dAmount = rl.getActualAmount(map); rlNode.setActualAmount(dAmount, map); } } } }
/// /// * <param name="bag"> /// * @return </param> /// public virtual JDFResourceLink updateNodeLink(AmountBag bag) { JDFResourceLink nodeLink = enclosingInstance.m_Node.getLink(0, null, new JDFAttributeMap(AttributeName.RREF, rl.getrRef()), null); if (bag != null) { VJDFAttributeMap vMap = new VJDFAttributeMap(enclosingInstance.m_vPartMap); if (vMap.Count == 0) { vMap.Add(new JDFAttributeMap()); } if (nodeLink != null) { if (bTrackWaste) { vMap.put(EnumPartIDKey.Condition, "Good"); nodeLink.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalAmount), null, vMap); vMap.put(EnumPartIDKey.Condition, "Waste"); nodeLink.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalWaste), null, vMap); } else { nodeLink.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalAmount + bag.totalWaste), null, vMap); } } } return(nodeLink); }
/// /// <summary> * </summary> /// * <param name="rl"> resourceLink to the resource that is being counted </param> /// public AmountBag(JDFResourceLink rl) : this(rl.getrRef()) { }