public static ProjectData load()

in instrumentation/src/com/intellij/rt/coverage/util/ProjectDataLoader.java [49:120]


  public static ProjectData load(File sessionDataFile) {
    final ProjectData projectInfo = new ProjectData();
    DataInputStream in = null;
    if (sessionDataFile.length() == 0) {
      return projectInfo;
    }
    final StringsPool pool = new StringsPool();
    try {
      in = CoverageIOUtil.openReadFile(sessionDataFile);
      final TIntObjectHashMap<ClassData> dict = new TIntObjectHashMap<ClassData>(1000, 0.99f);
      final int classCount = CoverageIOUtil.readINT(in);
      for (int c = 0; c < classCount; c++) {
        final String className = pool.getFromPool(CoverageIOUtil.readUTFFast(in));
        final ClassData classInfo = projectInfo.getOrCreateClassData(className);
        dict.put(c, classInfo);
      }
      for (int c = 0; c < classCount; c++) {
        final ClassData classInfo = dict.get(CoverageIOUtil.readINT(in));
        final int methCount = CoverageIOUtil.readINT(in);
        final TIntObjectHashMap<LineData> lines = new TIntObjectHashMap<LineData>(4, 0.99f);
        int maxLine = -1;
        for (int m = 0; m < methCount; m++) {
          final String methodSig = pool.getFromPool(expand(in, dict));
          final int lineCount = CoverageIOUtil.readINT(in);
          for (int l = 0; l < lineCount; l++) {
            final int line = CoverageIOUtil.readINT(in);
            LineData lineInfo = lines.get(line);
            if (lineInfo == null) {
              lineInfo = new LineData(line, methodSig);
              lines.put(line, lineInfo);
              if (line > maxLine) maxLine = line;
            }
            classInfo.registerMethodSignature(lineInfo);
            String testName = pool.getFromPool(CoverageIOUtil.readUTFFast(in));
            if (testName != null && !testName.isEmpty()) {
              lineInfo.setTestName(testName);
            }
            final int hits = CoverageIOUtil.readINT(in);
            lineInfo.setHits(hits);
            if (hits > 0) {
              final int jumpsNumber = CoverageIOUtil.readINT(in);
              for (int j = 0; j < jumpsNumber; j++) {
                lineInfo.setTrueHits(j, CoverageIOUtil.readINT(in));
                lineInfo.setFalseHits(j, CoverageIOUtil.readINT(in));
              }
              final int switchesNumber = CoverageIOUtil.readINT(in);
              for (int s = 0; s < switchesNumber; s++) {
                final int defaultHit = CoverageIOUtil.readINT(in);
                final int keysLength = CoverageIOUtil.readINT(in);
                final int[] keys = new int[keysLength];
                final int[] keysHits = new int[keysLength];
                for (int k = 0; k < keysLength; k++) {
                  keys[k] = CoverageIOUtil.readINT(in);
                  keysHits[k] = CoverageIOUtil.readINT(in);
                }
                lineInfo.setDefaultHits(s, keys, defaultHit);
                lineInfo.setSwitchHits(s, keys, keysHits);
              }
            }
            lineInfo.fillArrays();
          }
        }
        classInfo.setLines(LinesUtil.calcLineArray(maxLine, lines));
      }
      loadExtraInfo(projectInfo, in, dict);
    } catch (Exception e) {
      ErrorReporter.warn("Failed to load coverage data from file: " + sessionDataFile.getAbsolutePath(), e);
    } finally {
      CoverageIOUtil.close(in);
    }
    return projectInfo;
  }