fn custom_raw_data_parser()

in src/data/java_profile.rs [268:306]


    fn custom_raw_data_parser(
        &mut self,
        params: crate::visualizer::ReportParams,
    ) -> Result<Vec<ProcessedData>> {
        let processes_loc = params
            .data_dir
            .join(format!("{}-jps-map.json", params.run_name));
        let processes_json =
            fs::read_to_string(processes_loc.to_str().unwrap()).unwrap_or_default();
        let mut process_map: HashMap<String, Vec<String>> =
            serde_json::from_str(&processes_json).unwrap_or(HashMap::new());
        let process_list: Vec<String> = process_map.clone().into_keys().collect();

        for process in process_list {
            let mut fg_loc = params.report_dir.clone();
            fg_loc.push(format!(
                "data/js/{}-java-flamegraph-{}.html",
                params.run_name, process
            ));
            let mut html_loc = params.data_dir.clone();
            html_loc.push(format!(
                "{}-java-flamegraph-{}.html",
                params.run_name, process
            ));
            let html = fs::read_to_string(html_loc.to_str().unwrap())
                .unwrap_or(String::from("No data collected."));
            let mut fg_file = File::create(fg_loc.clone())?;
            write!(fg_file, "{}", html)?;

            process_map
                .entry(process)
                .and_modify(|v| v.push(html.len().to_string()));
        }

        let mut java_profile_data = JavaProfile::new();
        java_profile_data.data = serde_json::to_string(&process_map)?;
        let processed_data = vec![ProcessedData::JavaProfile(java_profile_data)];
        Ok(processed_data)
    }