/*
* Copyright (C) 2011-2016 asksven
*
* 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.asksven.android.common.privateapiproxies;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import android.util.Log;
import com.asksven.android.common.nameutils.UidNameResolver;
import com.asksven.android.common.utils.DateUtils;
import com.google.gson.annotations.SerializedName;
/**
* Value holder for alarm items
* @author sven
*
*/
public class SensorUsageItem implements Serializable
{
/**
* the tag for logging
*/
private static transient final String TAG = "SensorItem";
@SerializedName("time")
@JsonProperty("time")
long m_nTime;
@SerializedName("sensor")
@JsonProperty("sensor")
String m_strSensor;
@SerializedName("handle")
@JsonProperty("handle")
int m_nHandle;
public SensorUsageItem()
{
}
/**
* Default cctor
* @param nCount
* @param strIntent
*/
@JsonIgnore
public SensorUsageItem(long nTime, String strSensor, int nHandle)
{
m_nTime = nTime;
m_strSensor = strSensor;
m_nHandle = nHandle;
}
public SensorUsageItem clone()
{
SensorUsageItem clone = new SensorUsageItem(m_nTime, m_strSensor, m_nHandle);
return clone;
}
/**
* Returns the sensor name
* @return
*/
@JsonProperty("sensor")
public String getSensor()
{
return m_strSensor;
}
/**
* Returns the time
* @return
*/
@JsonProperty("time")
public long getTime()
{
return m_nTime;
}
/**
* Returns the handle
* @return
*/
@JsonProperty("handle")
public int getHandle()
{
return m_nHandle;
}
/**
* Returns the data as a string
* @return
*/
@JsonIgnore
public String getData()
{
return "Sensor: " + m_strSensor + ", Time: " + DateUtils.formatDuration(m_nTime);
}
/**
* Substracts the values from a previous object
* found in myList from the current Process
* in order to obtain an object containing only the data since a referenc
* @param myList
*/
public void substractFromRef(List<SensorUsageItem> myList )
{
if (myList != null)
{
for (int i = 0; i < myList.size(); i++)
{
try
{
SensorUsageItem myRef = (SensorUsageItem) myList.get(i);
if (this.getSensor().equals(myRef.getSensor()))
{
// process main values
this.m_nTime -= myRef.getTime();
Log.i(TAG, "Result: " + this.toString());
}
}
catch (ClassCastException e)
{
// just log as it is no error not to change the process
// being substracted from to do nothing
Log.e(TAG, "SensorItem.substractFromRef was called with a wrong list type");
}
}
}
}
}