Parse mem info as long.

Ignore entries with values greater than a long instead of crashing.

Change-Id: I62410d4083169143049229afd47236a0984b3c42
diff --git a/src/com/android/loganalysis/item/MemInfoItem.java b/src/com/android/loganalysis/item/MemInfoItem.java
index 07a14fe..9fa512c 100644
--- a/src/com/android/loganalysis/item/MemInfoItem.java
+++ b/src/com/android/loganalysis/item/MemInfoItem.java
@@ -22,7 +22,7 @@
  * An {@link IItem} used to store the memory info output.
  */
 @SuppressWarnings("serial")
-public class MemInfoItem extends GenericMapItem<Integer> {
+public class MemInfoItem extends GenericMapItem<Long> {
 
     /** Constant for JSON output */
     public static final String LINES = "LINES";
diff --git a/src/com/android/loganalysis/parser/MemInfoParser.java b/src/com/android/loganalysis/parser/MemInfoParser.java
index 72125b0..4a48798 100644
--- a/src/com/android/loganalysis/parser/MemInfoParser.java
+++ b/src/com/android/loganalysis/parser/MemInfoParser.java
@@ -49,8 +49,12 @@
             Matcher m = INFO_LINE.matcher(line);
             if (m.matches()) {
                 String key = m.group(1);
-                Integer value = Integer.parseInt(m.group(2));
-                item.put(key, value);
+                try {
+                    Long value = Long.parseLong(m.group(2));
+                    item.put(key, value);
+                } catch (NumberFormatException e) {
+                    // Ignore
+                }
             }
         }
 
diff --git a/tests/src/com/android/loganalysis/item/MemInfoItemTest.java b/tests/src/com/android/loganalysis/item/MemInfoItemTest.java
index beda797..7f25fe3 100644
--- a/tests/src/com/android/loganalysis/item/MemInfoItemTest.java
+++ b/tests/src/com/android/loganalysis/item/MemInfoItemTest.java
@@ -30,8 +30,8 @@
      */
     public void testToJson() throws JSONException {
         MemInfoItem item = new MemInfoItem();
-        item.put("foo", 123);
-        item.put("bar", 456);
+        item.put("foo", 123l);
+        item.put("bar", 456l);
         item.setText("foo: 123 kB\nbar: 456 kB");
 
         // Convert to JSON string and back again
diff --git a/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java b/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java
index d02ce39..ab41b33 100644
--- a/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java
+++ b/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java
@@ -37,16 +37,20 @@
                 "MemFree:           65420 kB",
                 "Buffers:           20800 kB",
                 "Cached:            86204 kB",
-                "SwapCached:            0 kB");
+                "SwapCached:            0 kB",
+                "Long:           34359640152 kB",
+                "ExtraLongIgnore: 12345678901234567890 kB");
 
         MemInfoItem item = new MemInfoParser().parse(inputBlock);
 
-        assertEquals(5, item.size());
-        assertEquals((Integer)353332, item.get("MemTotal"));
-        assertEquals((Integer)65420, item.get("MemFree"));
-        assertEquals((Integer)20800, item.get("Buffers"));
-        assertEquals((Integer)86204, item.get("Cached"));
-        assertEquals((Integer)0, item.get("SwapCached"));
+        assertEquals(6, item.size());
+        assertEquals((Long)353332l, item.get("MemTotal"));
+        assertEquals((Long)65420l, item.get("MemFree"));
+        assertEquals((Long)20800l, item.get("Buffers"));
+        assertEquals((Long)86204l, item.get("Cached"));
+        assertEquals((Long)0l, item.get("SwapCached"));
+        assertEquals((Long)34359640152l, item.get("Long"));
+        assertNull(item.get("ExtraLongIgnore"));
         assertEquals(ArrayUtil.join("\n", inputBlock), item.getText());
     }