Added the ability for Queue functions like mkdirs to override if they are done or not.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4458 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
kshakir 2010-10-08 06:39:55 +00:00
parent 97b153f2fa
commit e02f837659
3 changed files with 30 additions and 4 deletions

View File

@ -12,11 +12,11 @@ class FunctionEdge(var function: QFunction) extends QEdge {
var runner: JobRunner =_
private var currentStatus = {
val doneOutputs = function.doneOutputs
val failOutputs = function.failOutputs
if (failOutputs.exists(_.exists))
val isDone = function.isDone
val isFail = function.isFail
if (isFail.isDefined && isFail.get)
RunnerStatus.FAILED
else if (doneOutputs.size > 0 && doneOutputs.forall(_.exists))
else if (isDone.isDefined && isDone.get)
RunnerStatus.DONE
else
RunnerStatus.PENDING

View File

@ -34,6 +34,30 @@ trait QFunction {
*/
def dotString = ""
/**
* Returns true if the function is done, false if it's
* not done and None if the done status is unknown.
*/
def isDone = {
val files = doneOutputs
if (files.size == 0)
None
else
Some(files.forall(_.exists))
}
/**
* Returns true if the function has failed, false if it
* has not failed and None if the fail status is unknown.
*/
def isFail = {
val files = failOutputs
if (files.size == 0)
None
else
Some(files.exists(_.exists))
}
/**
* Returns true if the file should be used for status output.
* @return true if the file should be used for status output.

View File

@ -19,5 +19,7 @@ class CreateTempDirsFunction extends InProcessFunction {
override def useStatusOutput(file: File) = false
override def isDone = Some(tempDirectories.forall(_.exists))
def run() = tempDirectories.foreach(_.mkdirs)
}