• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.bugreportsender;
2 
3 import android.util.Log;
4 
5 import java.io.BufferedReader;
6 import java.io.IOException;
7 import java.io.InputStream;
8 import java.io.InputStreamReader;
9 
10 /**
11  * Utility class for parsing a bugreport into its sections.
12  */
13 public final class BugReportParser {
14     private static final int BUFFER_SIZE = 8*1024;
15     private static final String SECTION_HEADER = "------";
16     private static final int MAX_LINES = 1000; // just in case we miss the end of the section.
17 
18     // utility class
BugReportParser()19     private BugReportParser() {}
20 
extractSystemLogs(InputStream in, String section)21     public static String extractSystemLogs(InputStream in, String section) throws IOException {
22         final String sectionWithHeader = SECTION_HEADER + " " + section;
23         StringBuilder sb = new StringBuilder();
24         // open a reader around the provided inputstream.
25         BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"), BUFFER_SIZE);
26         boolean inSection = false;
27         int numLines = 0;
28         // read file contents.  loop until we get to the appropriate section header.
29         // once we reach that header, accumulate all lines until we get to the next section.
30         String line = null;
31         while ((line = reader.readLine()) != null) {
32             if (inSection) {
33                 // finish when we get to:
34                 // -----
35                 if (line.startsWith(SECTION_HEADER) || (numLines > MAX_LINES)) {
36                     break;
37                 }
38                 sb.append(line);
39                 sb.append("\n");
40                 ++numLines;
41             } else if (line.startsWith(sectionWithHeader)) {
42                 sb.append(line);
43                 sb.append("\n");
44                 inSection = true;
45             }
46         }
47         return sb.toString();
48     }
49 }
50