private void writeFile()

in java6-utils/src/com/intellij/rt/coverage/report/XMLCoverageReport.java [320:362]


  private void writeFile(String fileName, List<LineData> lines, Map<LineData, Counter> lineCounters) throws XMLStreamException {
    myOut.writeStartElement(SOURCEFILE_TAG);
    myOut.writeAttribute(NAME_TAG, fileName);
    newLine();
    final TIntObjectHashMap<Counter> groupedLines = new TIntObjectHashMap<Counter>();
    for (LineData lineData : lines) {
      if (lineData == null) continue;
      final int lineNumber = lineData.getLineNumber();
      Counter lineCounter = groupedLines.get(lineNumber);
      if (lineCounter == null) {
        lineCounter = new Counter();
        groupedLines.put(lineNumber, lineCounter);
      }
      final Counter counter = lineCounters.get(lineData);
      if (counter != null) {
        lineCounter.add(counter);
      }
    }

    final List<LineCounter> groupedLinesList = new ArrayList<LineCounter>();
    groupedLines.forEachEntry(new TIntObjectProcedure<Counter>() {
      public boolean execute(int lineNumber, Counter counter) {
        groupedLinesList.add(new LineCounter(lineNumber, counter));
        return true;
      }
    });

    Collections.sort(groupedLinesList, new Comparator<LineCounter>() {
      public int compare(LineCounter o1, LineCounter o2) {
        return o1.line - o2.line;
      }
    });


    final Counter counter = new Counter();
    for (LineCounter lineCounter : groupedLinesList) {
      writeLine(lineCounter.counter, lineCounter.line);
      counter.add(lineCounter.counter);
    }
    writeCounter(counter, INSTRUCTION_MASK | LINE_MASK | BRANCH_MASK);
    myOut.writeEndElement();
    newLine();
  }