diff options
Diffstat (limited to 'src/com/android/loganalysis/item/BatteryDischargeItem.java')
-rw-r--r-- | src/com/android/loganalysis/item/BatteryDischargeItem.java | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/src/com/android/loganalysis/item/BatteryDischargeItem.java b/src/com/android/loganalysis/item/BatteryDischargeItem.java new file mode 100644 index 0000000..cdfcbcc --- /dev/null +++ b/src/com/android/loganalysis/item/BatteryDischargeItem.java @@ -0,0 +1,137 @@ +/* + * 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.item; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Set; + +/** + * An {@link IItem} used to store information related to Battery discharge + */ +public class BatteryDischargeItem implements IItem { + + /** Constant for JSON output */ + public static final String BATTERY_DISCHARGE = "BATTERY_DISCHARGE"; + + private Collection<BatteryDischargeInfoItem> mBatteryDischargeInfo = + new LinkedList<BatteryDischargeInfoItem>(); + + public static class BatteryDischargeInfoItem extends GenericItem { + /** Constant for JSON output */ + public static final String CLOCK_TIME_OF_DISCHARGE = "CLOCK_TIME_OF_DISCHARGE"; + /** Constant for JSON output */ + public static final String DISCHARGE_ELAPSED_TIME = "DISCHARGE_ELAPSED_TIME"; + /** Constant for JSON output */ + public static final String BATTERY_LEVEL = "BATTERY_LEVEL"; + + private static final Set<String> ATTRIBUTES = new HashSet<String>(Arrays.asList( + CLOCK_TIME_OF_DISCHARGE, DISCHARGE_ELAPSED_TIME, BATTERY_LEVEL)); + + /** + * The constructor for {@link BatteryDischargeInfoItem} + * + * @param clockTime Clock time when the battery discharge happened + * @param elapsedTime Time it took to discharge to the current battery level + * @param batteryLevel Current battery level + */ + public BatteryDischargeInfoItem(Calendar clockTime, long elapsedTime, int batteryLevel) { + super(ATTRIBUTES); + + setAttribute(CLOCK_TIME_OF_DISCHARGE, clockTime); + setAttribute(DISCHARGE_ELAPSED_TIME, elapsedTime); + setAttribute(BATTERY_LEVEL, batteryLevel); + } + + /** + * Get the clock time when the battery level dropped + */ + public Calendar getClockTime() { + return (Calendar) getAttribute(CLOCK_TIME_OF_DISCHARGE); + } + + /** + * Get the time elapsed to discharge to the current battery level + */ + public long getElapsedTime() { + return (long) getAttribute(DISCHARGE_ELAPSED_TIME); + } + + /** + * Get the current battery level + */ + public int getBatteryLevel() { + return (int) getAttribute(BATTERY_LEVEL); + } + } + + /** + * Add a battery discharge step from battery stats + * + * @param clockTime Clock time when the battery discharge happened + * @param elapsedTime Time it took to discharge to the current battery level + * @param batteryLevel Current battery level + */ + public void addBatteryDischargeInfo(Calendar clockTime, long elapsedTime, int batteryLevel) { + mBatteryDischargeInfo.add(new BatteryDischargeInfoItem(clockTime, + elapsedTime, batteryLevel)); + } + + public Collection<BatteryDischargeInfoItem> getDischargeStepsInfo() { + return mBatteryDischargeInfo; + } + + /** + * {@inheritDoc} + */ + @Override + public IItem merge(IItem other) throws ConflictingItemException { + throw new ConflictingItemException("Wakelock items cannot be merged"); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean isConsistent(IItem other) { + return false; + } + + /** + * {@inheritDoc} + */ + @Override + public JSONObject toJson() { + JSONObject object = new JSONObject(); + try { + JSONArray batteryDischargeSteps = new JSONArray(); + for (BatteryDischargeInfoItem batteryDischargeStep : mBatteryDischargeInfo) { + batteryDischargeSteps.put(batteryDischargeStep.toJson()); + } + object.put(BATTERY_DISCHARGE, batteryDischargeSteps); + } catch (JSONException e) { + // Ignore + } + return object; + } +} |