Displaying differences for changeset
 
display as  

src/java/m/cfa/durationcurve/guiDC_Model.java

@@ -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++) {