Example #1
0
        ///
        ///	 <summary> * sets the QueueEntry/@Status if the queue is automated, also resorts the queue to reflect the new Status and sets
        ///	 * the Queue/@Status based on the maximum number of concurrently running jobs also sets StartTime and EndTime
        ///	 * appropriately if the queue is automated
        ///	 *  </summary>
        ///	 * <param name="value"> the queuentry status to set
        ///	 *  </param>
        ///	 * <seealso cref= org.cip4.jdflib.auto.JDFAutoQueueEntry#setQueueEntryStatus(org.cip4.jdflib.auto.JDFAutoQueueEntry.EnumQueueEntryStatus) </seealso>
        ///
        public override void setQueueEntryStatus(EnumQueueEntryStatus @value)
        {
            EnumQueueEntryStatus oldVal = getQueueEntryStatus();

            if (isAutomated() && !ContainerUtil.Equals(oldVal, @value))
            {
                JDFQueue queue = (JDFQueue)getParentNode_KElement();
                lock (queue)
                {
                    base.setQueueEntryStatus(@value);
                    if (isCompleted())
                    {
                        if (!hasAttribute(AttributeName.ENDTIME))
                        {
                            base.setEndTime(new JDFDate());
                        }
                        queue.cleanup();
                    }
                    if (EnumQueueEntryStatus.Running.Equals(@value))
                    {
                        if (!hasAttribute(AttributeName.STARTTIME))
                        {
                            base.setStartTime(new JDFDate());
                        }
                        removeAttribute(AttributeName.ENDTIME);
                    }
                    queue.sortChildren();
                    queue.setStatusFromEntries();
                }
            }
            else if (!ContainerUtil.Equals(oldVal, @value)) // non automated
            {
                base.setQueueEntryStatus(@value);
            }
        }
Example #2
0
        public virtual void testCleanup()
        {
            JDFQueueEntry qe      = q.appendQueueEntry();
            MyClean       myClean = new MyClean();

            Assert.AreEqual(0, myClean.i);
            q.setCleanupCallback(myClean);
            qe.setQueueEntryStatus(EnumQueueEntryStatus.Removed);
            q.setAutomated(true);
            q.setMaxCompletedEntries(1);
            Assert.IsFalse(q.getQueueEntryVector().Contains(qe));
            Assert.AreEqual(1, myClean.i);
            Assert.AreEqual(5, q.numEntries(null), "removed completed and aborted");
            q.setMaxCompletedEntries(0);
            q.cleanup();
            Assert.AreEqual(2, myClean.i);

            Assert.AreEqual(4, q.numEntries(null), "removed completed and aborted");
        }