package com.dpt.tbase.app.base.utils;
import java.util.Observable;
import java.util.Observer;
import android.annotation.SuppressLint;
import android.text.TextUtils;
/**
* 时间倒计时监听类
*
* @author dupengtao@cyou-inc.com
* 2014-3-20
*/
@SuppressLint("SimpleDateFormat")
public abstract class TimeObserver implements Observer {
private String expireDate;
private int times=1;
public TimeObserver() {
super();
}
public TimeObserver(String expireDate) {
super();
this.expireDate = expireDate;
}
@Override
public void update(Observable observable, Object data) {
if (TextUtils.isEmpty(expireDate)) {
observable.deleteObserver(this);
return;
}
long l=Long.valueOf(expireDate)-1000*(times++);
changeTime(getExpireDate(String.valueOf(l)));
}
public String getExpireDate() {
return expireDate;
}
public void setExpireDate(String expireDate) {
this.expireDate = expireDate;
}
private String getExpireDate(String expireDate) {
String surplusDate = null;
long interval = Long.valueOf(expireDate);
if (interval <= 0) {
surplusDate = "";
} else {
long days = interval / (1000 * 60 * 60 * 24);
String dDays = days + "";
if (days < 10) {
dDays = "0" + days;
}
long hours = (interval - days * (1000 * 60 * 60 * 24))
/ (1000 * 60 * 60);
String dHours = hours + "";
if (hours < 10) {
dHours = "0" + hours;
}
long minutes = (interval - days * (1000 * 60 * 60 * 24) - hours
* (1000 * 60 * 60))
/ (1000 * 60);
String dMinutes = minutes + "";
if (minutes < 10) {
dMinutes = "0" + minutes;
}
long seconds = (interval - days * (1000 * 60 * 60 * 24) - hours
* (1000 * 60 * 60) - minutes * (1000 * 60)) / (1000);
String dSeconds = seconds + "";
if (seconds < 10) {
dSeconds = "0" + seconds;
}
if (days >= 30) {
dDays = 6 + "";
}
surplusDate = dDays + "天" + dHours + "小时" + dMinutes + "分"
+ dSeconds + "秒下架";
boolean isTimeOver = days <= 0 && hours <= 0 && minutes <= 0
&& seconds <= 0;
if (isTimeOver) {
onTimeOver();
return "";// throw exception
}
}
return surplusDate;
}
public abstract void changeTime(String changeTime);
public abstract void onTimeOver();
}