From b6c0e1b1c0b03db7fa587d6742a676c2ba8a2fee Mon Sep 17 00:00:00 2001
From: Peter Alexander <peter@blackhillock.co.uk>
Date: Thu, 6 Aug 2015 09:39:20 +0100
Subject: [PATCH] Output error marker file

---
 src/ac/ed/lurg/ModelMain.java                 | 11 +++++--
 src/ac/ed/lurg/output/LpjgOutputer.java       | 29 ++++++++++++-------
 .../raster/AbstractTabularRasterReader.java   |  1 -
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index 54c1b213..32621d3f 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -65,8 +65,15 @@ public class ModelMain {
 
 	/* run the model */
 	private void run() {
-		for (int i = ModelConfig.START_TIMESTEP; i <= ModelConfig.END_TIMESTEP; i++)
-			doTimestep(i);
+		for (int i = ModelConfig.START_TIMESTEP; i <= ModelConfig.END_TIMESTEP; i++) {
+			try {
+				doTimestep(i);
+			}
+			catch (Exception e) {
+				LpjgOutputer.writeMarkerFile(ModelConfig.BASE_YEAR + i, true);
+				throw new RuntimeException(e);
+			}
+		}
 	}
 
 	private void doTimestep(int timestep) {
diff --git a/src/ac/ed/lurg/output/LpjgOutputer.java b/src/ac/ed/lurg/output/LpjgOutputer.java
index 72e08c80..57135349 100644
--- a/src/ac/ed/lurg/output/LpjgOutputer.java
+++ b/src/ac/ed/lurg/output/LpjgOutputer.java
@@ -33,22 +33,29 @@ public class LpjgOutputer {
 	}
 
 	public void writeOutput() {
-		String outputDirName = ModelConfig.OUTPUT_DIR + File.separator + year;
+		File outputDir = getOutputDir(year);
+
+		writeLandCoverAndCrop(outputDir);
+		writeIntensity(outputDir);
+		writeMarkerFile(year, false);
+	}
+
+	private static File getOutputDir(int yr) {
+		String outputDirName = ModelConfig.OUTPUT_DIR + File.separator + yr;
 		File outputDir = new File(outputDirName);
 		outputDir.mkdirs();
-
-		writeLandCoverAndCrop(outputDirName);
-		writeIntensity(outputDirName);
-		writeMarkerFile(outputDirName, false);
+		return outputDir;
 	}
 
-	private void writeIntensity(String outputDirName) {
+	private void writeIntensity(File outputDir) {
 		// TODO Auto-generated method stub
 		
 	}
 
-	private void writeMarkerFile(String outputDirName, boolean errorStatus) {
-		File markerFile = new File(outputDirName + File.separator + (errorStatus ? "error" : "done"));
+	public static void writeMarkerFile(int year, boolean errorStatus) {
+		File outputDir = getOutputDir(year);
+
+		File markerFile = new File(outputDir.getPath() + File.separator + (errorStatus ? "error" : "done"));
 		
 		try {
 			if (!markerFile.exists())
@@ -60,17 +67,17 @@ public class LpjgOutputer {
 		}	
 	}
 
-	public void writeLandCoverAndCrop(String outputDir) {
+	public void writeLandCoverAndCrop(File outputDir) {
 		BufferedWriter landCoverWriter = null;
 		BufferedWriter cropFractWriter = null;
 
 		try {
-			String landCoverFileName = outputDir + File.separator + "LandCoverFract.txt";
+			String landCoverFileName = outputDir.getPath() + File.separator + "LandCoverFract.txt";
 			landCoverWriter = new BufferedWriter(new FileWriter(landCoverFileName, false));
 			landCoverWriter.write("Lon Lat CROPLAND PASTURE NATURAL BARREN");
 			landCoverWriter.newLine();
 
-			String cropFractionFileName = outputDir + File.separator + "CropFract.txt";
+			String cropFractionFileName = outputDir.getPath() + File.separator + "CropFract.txt";
 			cropFractWriter = new BufferedWriter(new FileWriter(cropFractionFileName, false));
 			cropFractWriter.write("Lon Lat TeWWirr TeSWirr TeCoirr TrRiirr");
 			cropFractWriter.newLine();
diff --git a/src/ac/sac/raster/AbstractTabularRasterReader.java b/src/ac/sac/raster/AbstractTabularRasterReader.java
index fe20b043..03988c24 100644
--- a/src/ac/sac/raster/AbstractTabularRasterReader.java
+++ b/src/ac/sac/raster/AbstractTabularRasterReader.java
@@ -40,7 +40,6 @@ public abstract class AbstractTabularRasterReader<D extends RasterItem> {
 		return headertokens;
 	}
 	
-	
 	public RasterSet<D> getRasterDataFromFile(String filename) {
 		long startTime = System.currentTimeMillis();
 
-- 
GitLab