public void saveResult(GameResult result) {
        cacheGameResultsMaps(result);
        FileOutputStream fo = null;
        BufferedWriter bw = null;
        try {
            fo = new FileOutputStream(new File(this.resultsDataFilePath));
            bw = new BufferedWriter(new OutputStreamWriter(fo));
            for(Map.Entry<String, List<GameResult>> entry : resultsMappedByGroup.entrySet()){
                for(GameResult gameResult : entry.getValue()){
                    bw.write(gameResult.toString());
                    bw.newLine();
                }
            }
            bw.flush();
        } catch (FileNotFoundException e) {
            logger.error("Can't find file :" + this.resultsDataFilePath, e);
        } catch (IOException e) {
            logger.error("Failed to read content from file :" + this.resultsDataFilePath, e);
        } finally {
            try {
                if (null != fo) {
                    fo.close();
                }
                if (null != bw) {
                    bw.close();
                }
            } catch (IOException e) {
                //e.printStackTrace();
                // IGNORE this exception
            }
        }
    }