Skip to content

Instantly share code, notes, and snippets.

@cdesch
Created March 27, 2015 16:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cdesch/07f73ae5d172bef2cf9a to your computer and use it in GitHub Desktop.
Save cdesch/07f73ae5d172bef2cf9a to your computer and use it in GitHub Desktop.
UpTimeEvent.java
package com.kickinespresso.apps.myuptime;
import android.os.SystemClock;
import com.orm.SugarRecord;
import java.util.Date;
import java.util.List;
import android.util.Log;
import static android.text.format.DateUtils.formatElapsedTime;
import java.util.Calendar;
import java.util.Locale;
import android.text.format.DateUtils;
import com.orm.query.Select;
/**
* Created by cj on 3/23/15.
*/
public class UpTimeEvent extends SugarRecord {
String name;
long uptime;
long startTime;
long lastKnownUpTime;
long endTime;
String shutdownDescription;
public UpTimeEvent(){
this.uptime = SystemClock.elapsedRealtime();
//this.startTime = new Date(this.roundToSecond(System.currentTimeMillis()) - this.roundToSecond(SystemClock.elapsedRealtime()));
this.startTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
this.lastKnownUpTime = System.currentTimeMillis();
this.endTime = 0;
}
public UpTimeEvent(String name ){
this.name = name;
this.uptime = SystemClock.elapsedRealtime();
this.startTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
this.lastKnownUpTime = System.currentTimeMillis();
this.endTime = 0;
}
public String getUpTimeFormatted(){
return formatElapsedTime(SystemClock.elapsedRealtime() / 1000);
}
public void updateLastKnownUpTime(){
this.lastKnownUpTime = System.currentTimeMillis();
this.save();
}
public void updateGracefulShutdown(){
this.lastKnownUpTime = System.currentTimeMillis();
this.endTime = System.currentTimeMillis();
this.shutdownDescription = "Graceful";
this.save();
}
public boolean isSameEvent(){
//Log.d("UpTimeEvent", "isSameEvent Start");
UTDate currentDate = new UTDate(System.currentTimeMillis() - SystemClock.elapsedRealtime());
UTDate endTimeDate = new UTDate(this.endTime);
UTDate startTimeDate = new UTDate(this.startTime);
UTDate oldDate = new UTDate(0);
Log.d("UpTimeEvent", "end: " + endTimeDate.toString() + " old date: " + oldDate.toString());
if (endTimeDate.equals(oldDate)){
Log.d("UpTimeEvent", "start: " + startTimeDate.toString() + " currentDate: " + currentDate.toString());
if (startTimeDate.equals( currentDate)) {
Log.d("UpTimeEvent", "same event");
return true;
}else{
Log.d("UpTimeEvent", "Not same event");
return false;
}
}else{
return false;
}
}
public static UpTimeEvent getLastUpTimeEvent(){
List<UpTimeEvent> eventsList = UpTimeEvent.listAll(UpTimeEvent.class);
if(eventsList.isEmpty()){
UpTimeEvent newEvent = new UpTimeEvent();
newEvent.save();
return newEvent;
}else {
//get the last one
UpTimeEvent upTimeEvent = eventsList.get(eventsList.size() - 1);
if(!upTimeEvent.isSameEvent()){
//find end time
upTimeEvent.endTime = upTimeEvent.lastKnownUpTime;
upTimeEvent.shutdownDescription = "Not Graceful or interrupted";
upTimeEvent.save();
upTimeEvent = new UpTimeEvent();
upTimeEvent.save();
}
return upTimeEvent;
//return Select.from(UpTimeEvent.class).orderBy("title").last;
}
}
private long roundToSecond(long milliseconds){
return 1000 * (milliseconds / 1000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment