com.olabini.jescov.generators.JsonGenerator.java Source code

Java tutorial

Introduction

Here is the source code for com.olabini.jescov.generators.JsonGenerator.java

Source

/*
 * See LICENSE file in distribution for copyright and licensing information.
 */
package com.olabini.jescov.generators;

import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

import java.util.*;

import com.olabini.jescov.CoverageData;
import com.olabini.jescov.FileCoverage;
import com.olabini.jescov.LineCoverage;
import com.olabini.jescov.BranchCoverage;

import org.json.simple.JSONValue;

public class JsonGenerator implements Generator {
    private final Writer writer;

    public JsonGenerator(Writer writer) {
        this.writer = writer;
    }

    public void generate(CoverageData data) throws IOException {
        Map genData = convert(data);
        JSONValue.writeJSONString(genData, writer);
    }

    private Map convert(CoverageData data) {
        Map result = new HashMap();
        for (String file : data.getFileNames()) {
            result.put(file, convert(data.getFileCoverageFor(file)));
        }
        return result;
    }

    private List convert(FileCoverage c) {
        List result = new LinkedList();
        for (Integer line : c.getLines()) {
            result.add(convert(c, line));
        }
        return result;
    }

    private List convert(FileCoverage c, Integer line) {
        List result = new LinkedList();
        result.add(line);
        LineCoverage lc = c.getLineCoverageFor(line);
        if (lc == null) {
            result.add(0);
        } else {
            result.add(lc.getHits());
        }

        Collection<BranchCoverage> bcs = c.getBranchCoverageFor(line);
        if (null == bcs) {
            bcs = Collections.<BranchCoverage>emptySet();
        }
        result.add(convert(bcs));
        return result;
    }

    private List convert(Collection<BranchCoverage> bcs) {
        List result = new LinkedList();
        for (BranchCoverage bc : bcs) {
            result.add(convert(bc));
        }
        return result;
    }

    private List convert(BranchCoverage bc) {
        List result = new LinkedList();
        result.add(bc.getBranchId());
        result.add(convert(bc.getBranches()));
        return result;
    }

    private List convert(int[] list) {
        List result = new LinkedList();
        for (int i : list) {
            result.add(i);
        }
        return result;
    }
}