Esempio n. 1
0
            ///
            ///		 * <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);
            }
Esempio n. 2
0
 ///
 ///		 <summary> * copy ctor
 ///		 *  </summary>
 ///		 * <param name="bag"> </param>
 ///
 public AmountBag(AmountBag bag)
 {
     refID       = bag.refID;
     totalAmount = bag.totalAmount;
     phaseAmount = bag.phaseAmount;
     totalWaste  = bag.totalWaste;
     phaseWaste  = bag.phaseWaste;
 }
Esempio n. 3
0
        ///
        ///	 * <param name="lastAb"> </param>
        ///	 * <param name="jp"> </param>
        ///
        private void setJobPhaseAmounts(AmountBag lastAb, JDFJobPhase jp)
        {
            if (lastAb == null)
            {
                return;
            }

            LinkAmount la = getLinkAmount(lastAb.refID);

            if (la == null)
            {
                return;
            }

            if (la.bTrackWaste)
            {
                if (lastAb.phaseAmount != 0)
                {
                    jp.setPhaseAmount(lastAb.phaseAmount);
                }
                if (lastAb.totalAmount != 0)
                {
                    jp.setAmount(lastAb.totalAmount);
                }
                if (lastAb.phaseWaste != 0)
                {
                    jp.setPhaseWaste(lastAb.phaseWaste);
                }
                if (lastAb.totalWaste != 0)
                {
                    jp.setWaste(lastAb.totalWaste);
                }
            }
            else
            {
                if ((lastAb.phaseAmount + lastAb.phaseWaste) != 0)
                {
                    jp.setPhaseAmount(lastAb.phaseAmount + lastAb.phaseWaste);
                }
                if ((lastAb.totalAmount + lastAb.totalWaste) != 0)
                {
                    jp.setAmount(lastAb.totalAmount + lastAb.totalWaste);
                }
            }
            double total = 0;

            total = la.startAmount;
            if (total != 0)
            {
                jp.setTotalAmount(total);
                jp.setPercentCompleted(lastAb.totalAmount / total * 100.0);
            }
        }
Esempio n. 4
0
        ///
        ///	 * <param name="bag"> </param>
        ///	 * <returns> JDFResourceAudit the generated audit </returns>
        ///
        public virtual JDFResourceAudit setResourceAudit(AmountBag bag, EnumReason reason)
        {
            JDFAuditPool ap = m_Node.getCreateAuditPool();

            JDFResourceAudit ra = ap.addResourceAudit(null);

            ra.setContentsModified(false);
            ra.setReason(reason);

            LinkAmount la = getLinkAmount(bag.refID);

            ra.copyElement(la.getResourceAuditLink(bag), null);
            ra.setPartMapVector(m_vPartMap);

            return(ra);
        }
Esempio n. 5
0
 ///
 ///		 <summary> * @return </summary>
 ///
 public virtual JDFResourceLink getResourceInfoLink(AmountBag bag)
 {
     cleanAmounts();
     if (bag != null)
     {
         VJDFAttributeMap vMap = new VJDFAttributeMap(enclosingInstance.m_vPartMap);
         if (vMap.Count == 0)
         {
             vMap.Add(new JDFAttributeMap());
         }
         if (bTrackWaste)
         {
             vMap.put(EnumPartIDKey.Condition, "Good");
             if (bag.totalAmount != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalAmount), null, vMap);
             }
             if (startAmount != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.AMOUNT, StringUtil.formatDouble(startAmount), null, vMap);
             }
             vMap.put(EnumPartIDKey.Condition, "Waste");
             if (bag.totalWaste != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalWaste), null, vMap);
             }
             if (startWaste != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.AMOUNT, StringUtil.formatDouble(startWaste), null, vMap);
             }
         }
         else
         {
             if (bag.totalAmount + bag.totalWaste != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.ACTUALAMOUNT, StringUtil.formatDouble(bag.totalAmount + bag.totalWaste), null, vMap);
             }
             if (startAmount + startWaste != 0)
             {
                 rl.setAmountPoolAttribute(AttributeName.AMOUNT, StringUtil.formatDouble(startAmount + startWaste), null, vMap);
             }
         }
     }
     return(rl);
 }
Esempio n. 6
0
        ///
        ///	 <summary> * Set the Status and StatusDetails of this node update the PhaseTime audit or append a new phasetime as appropriate
        ///	 * also prepare a status JMF
        ///	 *  </summary>
        ///	 * <param name="nodeStatus"> the new status of the node </param>
        ///	 * <param name="nodeStatusDetails"> the new statusDetails of the node </param>
        ///	 * <param name="deviceStatus"> the new status of the device </param>
        ///	 * <param name="deviceStatusDetails"> the new statusDetails of the device </param>
        ///	 * <param name="vPartMap"> the vector of parts to that should be set </param>
        ///	 * <param name="vResLink"> the resourcelinks that are used to fill the various amount attributes in jobphase and phasetime
        ///	 *  </param>
        ///
        public virtual void setPhase(EnumNodeStatus nodeStatus, string nodeStatusDetails, EnumDeviceStatus deviceStatus, string deviceStatusDetails, AmountBag[] amounts)
        {
            docJMFPhaseTime = new JDFDoc(ElementName.JMF);
            JDFJMF jmf = docJMFPhaseTime.getJMFRoot();

            docJMFResource = new JDFDoc(ElementName.JMF);
            JDFJMF jmfRes = docJMFResource.getJMFRoot();

            AmountBag  ab     = getBag(getFirstRefID(), amounts);
            LinkAmount la     = getLinkAmount(getFirstRefID());
            AmountBag  lastAb = la == null ? null : la.lastBag;

            JDFAuditPool ap = m_Node.getCreateAuditPool();
            // TODO rethink when to send 2 phases
            JDFPhaseTime pt1  = ap.getLastPhase(m_vPartMap, null);
            JDFPhaseTime pt2  = pt1;
            bool         bEnd = nodeStatus.Equals(EnumNodeStatus.Completed) || nodeStatus.Equals(EnumNodeStatus.Aborted);

            pt2 = ap.setPhase(nodeStatus, nodeStatusDetails, m_vPartMap, null);
            if (bEnd)
            {
                JDFProcessRun pr = (JDFProcessRun)ap.addAudit(EnumAuditType.ProcessRun, null);
                pr.setPartMapVector(m_vPartMap);
                VElement audits = ap.getAudits(EnumAuditType.PhaseTime, null, m_vPartMap);
                for (int i = 0; i < audits.Count; i++)
                {
                    pr.addPhase((JDFPhaseTime)audits[i]);
                }
                pr.setEndStatus(nodeStatus);
            }

            if (pt1 != null && pt2 != pt1) // we explicitly added a new phasetime
            // audit, thus we need to add a closing
            // JMF for the original jobPhase
            {
                JDFSignal     s          = (JDFSignal)jmf.appendMessageElement(JDFMessage.EnumFamily.Signal, JDFMessage.EnumType.Status);
                JDFDeviceInfo deviceInfo = s.appendDeviceInfo();

                JDFJobPhase jp = deviceInfo.createJobPhaseFromPhaseTime(pt1);
                jp.setJobID(m_Node.getJobID(true));
                jp.setJobPartID(m_Node.getJobPartID(false));
                setJobPhaseAmounts(lastAb, jp);

                if (m_deviceID != null)
                {
                    deviceInfo.setDeviceID(m_deviceID);
                }
            }

            if (pt2 != null)
            {
                JDFSignal     s          = (JDFSignal)jmf.appendMessageElement(JDFMessage.EnumFamily.Signal, JDFMessage.EnumType.Status);
                JDFDeviceInfo deviceInfo = s.appendDeviceInfo();
                if (!bEnd) // don't write a jobphase for an idle device
                {
                    JDFJobPhase jp = deviceInfo.createJobPhaseFromPhaseTime(pt2);
                    setJobPhaseAmounts(ab, jp);
                }

                deviceInfo.setDeviceStatus(deviceStatus);
                deviceInfo.setStatusDetails(deviceStatusDetails);
                deviceInfo.setDeviceID(m_deviceID);
                m_Node.setPartStatus(m_vPartMap, nodeStatus, null);
                getVResLink(amounts, 2); // update the nodes links

                generateResourceSignal(amounts, jmfRes);

                if (bEnd)
                {
                    pt2.deleteNode(); // zapp the last phasetime
                }
                else
                {
                    pt2.setLinks(getVResLink(amounts, 1));
                    pt2.eraseEmptyAttributes(true);
                }
            }

            // cleanup!
            if (vLinkAmount != null)
            {
                for (int i = 0; i < vLinkAmount.Length; i++)
                {
                    string    refID = vLinkAmount[i].rl.getrRef();
                    AmountBag bag   = getBag(refID, amounts);
                    vLinkAmount[i].lastBag = new AmountBag(bag);
                }
            }
            jmf.eraseEmptyAttributes(true);
        }