view SubjectResults.java @ 45:351b0c8b34ac

Fixed issue where error message was shown every time the user chose to move continue using the keyboard. Fixed issue where data wasn't saving to file after questionaire. Changed SubjectData output filename to "<Participant ID>_qu.dat" (previously was "subjects.dat". Would have been overwritten as wasn't dynamic.
author Carl Bussey <c.bussey@se10.qmul.ac.uk>
date Sun, 09 Jun 2013 22:06:52 +0100
parents 0e030f32a6e2
children
line wrap: on
line source
/*=============================================================================
 * File:       SubjectResults.java
 * Author:     Marcus Pearce <m.pearce@gold.ac.uk>
 * Created:    <2007-12-12 10:44:12 marcusp>
 * Time-stamp: <2011-11-10 19:13:32 marcusp>
 *=============================================================================
 */

import java.util.ArrayList; 
import java.util.Iterator;
import java.io.*; 

public class SubjectResults { 

    /* variables */ 
    private String subjectID; 
    private File outputFile, subjectDataFile; 
    private ArrayList results, subjectData; 
    private Experiment exp; 
    
    /* accessors */ 
    public String getSubjectID() { return subjectID; }
    public void setSubjectID(String id) { subjectID = id; } 
    public void setSubjectData (ArrayList sd) { subjectData = sd; }
    public void setSubjectDataFile(String id){
        subjectDataFile = new File(exp.RESULTS_DIRECTORY + File.separator + id + "_q" + exp.RESULTS_EXTENSION);
    }
    public void setOutputFile (String id) {
        outputFile = new File(exp.RESULTS_DIRECTORY + id + 
                              exp.RESULTS_EXTENSION); 
    }

    /* constructor */ 
    public SubjectResults(Experiment e) { 
        exp = e; 
        //subjectDataFile = new File(exp.SUBJECT_RESULTS_FILE);
        results = new ArrayList(); 
        subjectData = new ArrayList();
    }

    /* methods */ 
    public void addResult(MelodyResults mr) { 
        results.add(mr); 
    }

    public void writeResults() { 
        Iterator ri = results.iterator(); 
        boolean header = true;
        boolean append = false;
        while (ri.hasNext()) { 
            MelodyResults mResult = (MelodyResults)ri.next(); 
            mResult.writeResults(outputFile, header, append); 
            if (header) {
                header = false; 
                append = true;
            }
        }
    }

    public void writeSubjectData () {
        Writer writer = null;
        try {
            writer = new FileWriter (subjectDataFile, true);
        } catch (IOException e) {
            System.out.println("Could not write file: " + subjectDataFile.getPath());
            e.printStackTrace();
            return;
        }
        
        try {
            Iterator sji = subjectData.iterator(); 
            while(sji.hasNext()) { 
                String[] data = (String[])sji.next(); 
                writer.write(data[1] + ", ");
            }
            writer.write("\n"); 
            writer.close(); 
            
        } catch (IOException e) {
            System.out.println (e.getMessage());
            return;
        }
    }
}