/// /// <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); } }
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"); }