From 5d39aa90b847129fea7be0c92cb6af1a2716382f Mon Sep 17 00:00:00 2001
From: Sander Bollen <a.h.b.bollen@lumc.nl>
Date: Wed, 12 Oct 2016 13:21:28 +0200
Subject: [PATCH] use Option[File] for output dir in stead of String

---
 .../lumc/sasc/biopet/extensions/Cnmops.scala  | 22 ++++++++++++-------
 .../kopisu/methods/CnmopsMethod.scala         |  2 +-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cnmops.scala b/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cnmops.scala
index 973e65077..619ba7f9d 100644
--- a/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cnmops.scala
+++ b/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cnmops.scala
@@ -43,28 +43,34 @@ class Cnmops(val root: Configurable) extends RscriptCommandLineFunction {
   // output files, computed automatically from output directory
   @Output(doc = "Output CNV file")
   lazy val outputCnv: File = {
-    require(!outputDir.isEmpty, "Unexpected error when trying to set cn.MOPS CNV output")
-    new File(outputDir, "cnv.txt")
+    outputDir match {
+      case Some(dir) if dir.exists => new File(dir, "cnv.txt")
+      case _ => throw new IllegalArgumentException("Unexpected error when trying to set cn.MOPS CNV output")
+    }
   }
 
   @Output(doc = "Output CNR file")
   lazy val outputCnr: File = {
-    require(!outputDir.isEmpty, "Unexpected error when trying to set cn.MOPS CNR output")
-    new File(outputDir, "cnr.txt")
+    outputDir match {
+      case Some(dir) if dir.exists => new File(dir, "cnr.txt")
+      case _ => throw new IllegalArgumentException("Unexpected error when trying to set cn.MOPS CNR output")
+    }
   }
 
   @Output(doc = "Raw output")
   lazy val rawOutput: File = {
-    require(!outputDir.isEmpty, "Unexpected error when trying to set cn.MOPS raw output")
-    new File(outputDir, "rawoutput.txt")
+    outputDir match {
+      case Some(dir) if dir.exists => new File(dir, "rawoutput.txt")
+      case _ => throw new IllegalArgumentException("Unexpected error when trying to set cn.MOPS raw output")
+    }
   }
 
   /** write all output files to this directory [./] */
-  var outputDir: String = _
+  var outputDir: Option[File] = None
 
   override def beforeGraph = {
     super.beforeGraph
-    require(!outputDir.isEmpty, "Outputdir for cn.MOPS should not be empty")
+    require(outputDir.isDefined, "Outputdir for cn.MOPS should not be empty")
     require(input.length >= 2, "Please supply at least 2 BAM files for cn.MOPS")
   }
 
diff --git a/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/methods/CnmopsMethod.scala b/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/methods/CnmopsMethod.scala
index 3fab95440..d3cf28866 100644
--- a/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/methods/CnmopsMethod.scala
+++ b/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/methods/CnmopsMethod.scala
@@ -27,7 +27,7 @@ class CnmopsMethod(val root: Configurable) extends CnvMethod {
         case (sampleName, bamFile) => Some(bamFile)
         case _                     => None
       }.toList
-      cnmops.outputDir = new File(outputDir, contig.getSequenceName).getAbsolutePath
+      cnmops.outputDir = Some(new File(outputDir, contig.getSequenceName))
       cnmops.beforeGraph
       cnmops
     }).toList
-- 
GitLab