diff options
author | avellore <avellore@google.com> | 2015-05-19 12:21:25 -0700 |
---|---|---|
committer | avellore <avellore@google.com> | 2015-05-19 17:22:23 -0700 |
commit | c62fad09df43054df2d755ef7e43d6085656c04b (patch) | |
tree | dc972167eb160cf4580c806c52d32b87e0e358fe /src/com/android/loganalysis/parser/BatteryUsageParser.java | |
parent | 45eae46848a8ce314029a718ff5e5bded76fe3ce (diff) | |
download | loganalysis-c62fad09df43054df2d755ef7e43d6085656c04b.tar.gz |
Parse the battery usage statistics
Change-Id: I5000e4352ded2eaa004bc486242c241bcdf4dada
Diffstat (limited to 'src/com/android/loganalysis/parser/BatteryUsageParser.java')
-rw-r--r-- | src/com/android/loganalysis/parser/BatteryUsageParser.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/com/android/loganalysis/parser/BatteryUsageParser.java b/src/com/android/loganalysis/parser/BatteryUsageParser.java new file mode 100644 index 0000000..92cb5d2 --- /dev/null +++ b/src/com/android/loganalysis/parser/BatteryUsageParser.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.loganalysis.parser; + +import com.android.loganalysis.item.BatteryUsageItem; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * A {@link IParser} to parse battery usage statistics + */ +public class BatteryUsageParser implements IParser { + + /** + * Matches: Capacity: 3220, Computed drain: 11.0, actual drain: 0 + */ + private static final Pattern Capacity = Pattern.compile( + "^\\s*Capacity: (\\d+), Computed drain: \\d+.*"); + + private static final Pattern Usage = Pattern.compile("^\\s*(.*): (\\d+(\\.\\d*)?)"); + private BatteryUsageItem mItem = new BatteryUsageItem(); + + /** + * {@inheritDoc} + * + * @return The {@link BatteryUsageItem}. + */ + @Override + public BatteryUsageItem parse(List<String> lines) { + for (String line : lines) { + Matcher m = Capacity.matcher(line); + if(m.matches()) { + mItem.setBatteryCapacity(Integer.parseInt(m.group(1))); + } else { + m = Usage.matcher(line); + if (m.matches()) { + mItem.addBatteryUsage(m.group(1), Double.parseDouble(m.group(2))); + } + } + } + return mItem; + } + + /** + * Get the {@link BatteryUsageItem}. + * <p> + * Exposed for unit testing. + * </p> + */ + BatteryUsageItem getItem() { + return mItem; + } +} |