package app.create.rpg.task;
import java.io.PrintWriter;
import java.io.StringWriter;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.v4.app.NotificationCompat;
import app.create.rpg.R;
import app.create.rpg.ServiceFileTask;
public abstract class Task implements Runnable, Parcelable {
protected ServiceFileTask mService;
protected int mTaskId, mQueueId;
protected String mMessage;
protected float mProgress;
private boolean mUpdated = false;
public float getProgress () { return mProgress; }
public String getMessage () { return mMessage; }
public boolean onNotified () { boolean k = mUpdated; mUpdated = true; return k; }
public Task () {
mTaskId = 0;
mQueueId = 0;
mMessage = "";
mProgress= 0.0f;
}
public Task (Parcel source) {
mTaskId = source.readInt();
mQueueId = source.readInt();
mMessage = source.readString();
mProgress = source.readFloat();
}
public void printException (Exception e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
mMessage = sw.toString();
mService.onTaskUpdate();
NotificationManager nm = (NotificationManager) mService.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(ServiceFileTask.class.getName(), R.string.task_complete + mQueueId,
new NotificationCompat.Builder(mService)
.setAutoCancel(true).setOngoing(false)
.setTicker(mService.getText(R.string.app_name))
.setContentTitle("Error : " + e.getClass().getSimpleName())
.setContentText(e.toString())
.setContentIntent(mService.getTaskDialog())
.setSmallIcon(R.drawable.ic_launcher).build());
try {
while (true)
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e1) {
}
}
@Override
public void writeToParcel (Parcel dest, int flags) {
dest.writeInt(mTaskId);
dest.writeInt(mQueueId);
dest.writeString(mMessage);
dest.writeFloat(mProgress);
}
public int getTaskId () {
return mTaskId;
}
public int getQueueId () {
return mQueueId;
}
public void execute (Context context, int queueid) {
Intent intent = new Intent(context, ServiceFileTask.class);
intent.setAction(ServiceFileTask.ACTION_PUSH_TASK);
intent.putExtra("queueid", queueid);
intent.putExtra("task", (Parcelable) this);
context.startService(intent);
}
public void setService (ServiceFileTask service, int id, int queue) {
mService = service;
mTaskId = id;
mQueueId = queue;
}
public static final Creator<Task> CREATOR = null;
}