private static ProjectData copyProjectData()

in reporter/src/com/intellij/rt/coverage/aggregate/Aggregator.java [109:147]


  private static ProjectData copyProjectData(ProjectData projectData) {
    final ProjectData projectDataCopy = new ProjectData();
    for (ClassData classData : projectData.getClassesCollection()) {
      final ClassData classCopy = projectDataCopy.getOrCreateClassData(classData.getName());
      final LineData[] lines = (LineData[]) classData.getLines();
      if (lines == null) continue;
      final LineData[] linesCopy = new LineData[lines.length];
      classCopy.setLines(linesCopy);
      for (LineData lineData : lines) {
        if (lineData == null) continue;
        final LineData lineCopy = new LineData(lineData.getLineNumber(), lineData.getMethodSignature());
        lineCopy.setId(lineData.getId());
        linesCopy[lineCopy.getLineNumber()] = lineCopy;

        final JumpData[] jumps = lineData.getJumps();
        if (jumps != null) {
          for (int i = 0; i < jumps.length; i++) {
            final JumpData jump = jumps[i];
            final JumpData jumpCopy = lineCopy.addJump(i);
            jumpCopy.setId(jump.getId(true), true);
            jumpCopy.setId(jump.getId(false), false);
          }
        }

        final SwitchData[] switches = lineData.getSwitches();
        if (switches != null) {
          for (int i = 0; i < switches.length; i++) {
            final SwitchData aSwitch = switches[i];
            final SwitchData switchCopy = lineCopy.addSwitch(i, aSwitch.getKeys());
            for (int key = -1; key < aSwitch.getKeys().length; key++) {
              switchCopy.setId(aSwitch.getId(key), key);
            }
          }
        }
        lineCopy.fillArrays();
      }
    }
    return projectDataCopy;
  }