@@ -33,7 +33,7 @@ |
import org.jfree.data.xy.XYSeriesCollection; |
|
/** |
-* Last Updated: 31-May-2017 |
+* Last Updated: 1-June-2017 |
* @author Tyler Wible |
* @since 12-June-2011 |
*/ |
@@ -468,7 +468,7 @@ |
JFreeChart chart = new JFreeChart(graphTitle, Graphing.titleFont, plot, showLegend); |
|
//Write a results file containing the flow duration curve interval (exceedance values) and their corresponding discharge values |
- writeResults(xyRanks, "Discharge (cfs)"); |
+ writeResults(graphData, "Discharge [cfs]", false); |
|
//Save resulting graph for proof it works |
try{ |
@@ -1186,7 +1186,7 @@ |
legendTitle.setItemFont(Graphing.masterFont); |
|
//Write a results file containing the flow duration curve interval (exceedance values) and their corresponding discharge values |
- writeResults(xyRanks, yaxis_title); |
+ writeResults(graphData, yaxis_title, true); |
|
//Save resulting graph |
try{ |
@@ -1264,17 +1264,73 @@ |
/** |
* Writes out the non-zero results of the duration curve analysis which are the flow duration curve intervale and their corresponding flow/load values |
* @param results double[][] array to be written as each line of the text file |
- * @param partialpath the partial folder path of the file to be written |
- * @param resultType the second column of data header label |
+ * @param yColumnHeader the header data label for y column data (i.e. flow or load) |
+ * @param ldcTF true if load duration curve, false otherwise |
* @throws IOException |
*/ |
- private void writeResults(double[][] results, String resultType) throws IOException{ |
- //Remove zero results |
+ private void writeResults(String[][] results, String yColumnHeader, boolean ldcTF) throws IOException{ |
+ //Combine column data |
ArrayList<String> finalResults = new ArrayList<>(); |
for(int i=0; i<results.length; i++){ |
- //Only keep non-zero data |
- if(Double.compare(results[i][0],0) != 0){ |
- finalResults.add(results[i][0] + "\t" + results[i][1]); |
+ String currentRow = results[i][0]; |
+ for(int j=1; j<results[i].length; j++){ |
+ currentRow += "\t" + results[i][j]; |
+ } |
+ finalResults.add(currentRow); |
+ } |
+ |
+ //Create header |
+ int currentYear = Integer.parseInt(start.substring(0,4)); |
+ String header = null; |
+ boolean xDataTF = true; |
+ for(int j=0; j<results[0].length; j++){ |
+ switch (j) { |
+ case 0: |
+ header = "Percent of Time Flow is Exceeded [%] (overall)"; |
+ break; |
+ case 1: |
+ header += "\t" + yColumnHeader + " (overall)"; |
+ break; |
+ case 2: |
+ header += "\t" + "Exceedance (Period 1: " + period1Begin + " to " + period1End + ")"; |
+ break; |
+ case 3: |
+ header += "\t" + yColumnHeader + " (Period 1: " + period1Begin + " to " + period1End + ")"; |
+ break; |
+ case 4: |
+ header += "\t" + "Exceedance (Period 2: " + period2Begin + " to " + period2End + ")"; |
+ break; |
+ case 5: |
+ header += "\t" + yColumnHeader + " (Period 2: " + period2Begin + " to " + period2End + ")"; |
+ break; |
+ case 6: |
+ header += "\t" + "Exceedance (Period 3: " + period3Begin + " to " + period3End + ")"; |
+ break; |
+ case 7: |
+ header += "\t" + yColumnHeader + " (Period 3: " + period3Begin + " to " + period3End + ")"; |
+ break; |
+ default: |
+ if(xDataTF){ |
+ if(ldcTF && j == 8){ |
+ header += "\t" + "Exceedance (Seasonal Water Quality Obs.)"; |
+ }else if(ldcTF && j == 10){ |
+ header += "\t" + "Exceedance (Water Quality Obs.)"; |
+ }else{ |
+ header += "\t" + "Exceedance (" + currentYear + ")"; |
+ } |
+ xDataTF = false; |
+ }else{ |
+ if(ldcTF && j == 9){ |
+ header += "\t" + yColumnHeader + " (Seasonal Water Quality Obs.)"; |
+ }else if(ldcTF && j == 11){ |
+ header += "\t" + yColumnHeader + " (Water Quality Obs.)"; |
+ }else{ |
+ header += "\t" + yColumnHeader + " (" + currentYear + ")"; |
+ } |
+ currentYear++; |
+ xDataTF = true; |
+ } |
+ break; |
} |
} |
|
@@ -1283,7 +1339,7 @@ |
PrintWriter printLine = new PrintWriter(writer); |
|
//Add Headers to text file |
- printLine.printf("%s" + "\r\n", "Percent of Time Flow is Exceeded [%] (Excedence Probability based on Weibull Plotting Position Ranking)\t" + resultType); |
+ printLine.printf("%s" + "\r\n", header); |
|
//Output data to text file |
for(int i=0; i < finalResults.size(); i++) { |