Java tutorial
/* * 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; } }