Created
March 27, 2015 16:59
-
-
Save cdesch/07f73ae5d172bef2cf9a to your computer and use it in GitHub Desktop.
UpTimeEvent.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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