/*******************************************************************************
* Copyright (c) 2011 Nokia Corporation
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Comarch team - initial API and implementation
*******************************************************************************/
package org.ned.client;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import org.ned.client.view.GeneralAlert;
public class Scheduler {
private NedMidlet midlet = null;
private Timer timer = null;
private boolean timerRunning;
private Task task;
private final long ONCE_PER_DAY = 1000 * 60 * 60 * 24;
private class Task extends TimerTask {
public void run() {
System.out.println("Starting task!!!");
midlet.getDownloadManager().startDownloads();
}
}
public Scheduler(NedMidlet _midlet) {
midlet = _midlet;
}
public void startTask() {
//first cancel any running task
stopTask();
//compute data from settings
Calendar calendar = Calendar.getInstance();
System.out.println("Current Time: " + calendar.getTime().toString());
int hour12 = Integer.parseInt(midlet.getSettingsManager().getDlHour());
int hour = hour12;
//convert to 24 hour time
if (midlet.getSettingsManager().getDlAmPm().equals("PM")) {
if (hour < 12) {
hour += 12;
}
} else {
if (hour == 12) {
hour = 0;
}
}
int minute = Integer.parseInt(midlet.getSettingsManager().getDlMin());
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, minute);
System.out.println("Schedule Time: " + calendar.getTime());
timer = new Timer();
task = new Task();
long delay = calendar.getTime().getTime() - Calendar.getInstance().getTime().getTime();
if( delay >= 0 ) {
timer.schedule(task, delay,ONCE_PER_DAY);
} else {
timer.schedule(task, Math.abs(delay), ONCE_PER_DAY);
}
timerRunning = true;
String minutestring = String.valueOf(minute);
if (minute < 10) {
minutestring = "0" + minutestring;
}
String strHour12 = (hour12 < 10) ? "0" + String.valueOf(hour12) : String.valueOf(hour12);
Object[] param = {strHour12, minutestring, midlet.getSettingsManager().getDlAmPm()};
GeneralAlert.show( Localization.getMessage("SCH_MESSAGE", param), GeneralAlert.INFO );
midlet.getSettingsManager().setDlState(true);
}
public void stopTask() {
if (timerRunning) {
task.cancel();
timer.cancel();
midlet.getSettingsManager().setDlState(false);
timerRunning = false;
}
}
}