comparison src/main/java/alice/topology/manager/keeparive/ListManager.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children aefbe41fcf12
comparison
equal deleted inserted replaced
344:9f97ec18f8c5 345:8f71c3e6f11d
1 package alice.topology.manager.keeparive;
2
3 import java.util.LinkedList;
4
5 public class ListManager {
6 private LinkedList<TaskInfo> list = new LinkedList<TaskInfo>();
7
8 public LinkedList<TaskInfo> getTaskList() {
9 return list;
10 }
11
12 public void addTask(TaskInfo newInfo) {
13 TaskExecuter exec = TaskExecuter.getInstance();
14 TaskInfo nowTask = exec.getNowTask();
15 if (nowTask == null) { // active task is nothing
16 add(newInfo);
17 } else {
18 long remainingTime = exec.getRemainingTime();
19 if (remainingTime > newInfo.getSleepTime()) {
20 // active task is longer than newTask.
21 TaskInfo task = nowTask.clone();
22 task.setSleepTime(remainingTime);
23 list.addFirst(task);
24 add(newInfo);
25 exec.ignore();
26 } else {
27 // newTask is longer than active task.
28 newInfo.setSleepTime(newInfo.getSleepTime() - remainingTime);
29 add(newInfo);
30 }
31 }
32 show();
33 }
34
35 private void add(TaskInfo newInfo){
36 int cnt = 0;
37 for (TaskInfo info : list){
38 if (info.getSleepTime() < newInfo.getSleepTime()){
39 newInfo.setSleepTime(newInfo.getSleepTime() - info.getSleepTime());
40 } else if (info.getSleepTime() == newInfo.getSleepTime()){
41 // newInfo.getSleepTime() - info.getSleepTime() must be Zero
42 newInfo.setSleepTime(0);
43 cnt++;
44 break;
45 } else if (info.getSleepTime() > newInfo.getSleepTime()){
46 info.setSleepTime(info.getSleepTime() - newInfo.getSleepTime());
47 break;
48 }
49 cnt++;
50 }
51 list.add(cnt, newInfo);
52 }
53
54 public boolean deleteTask(TaskInfo task){
55 boolean matchFlag = false;
56 int cnt = 0;
57 for (TaskInfo t: list){
58 if (t.getType().equals(task.getType())){
59 matchFlag = true;
60 if (cnt+1 < list.size() ){ // next task exists.
61 TaskInfo next = list.get(cnt+1);
62 next.setSleepTime(next.getSleepTime()+task.getSleepTime());
63 }
64 list.remove(cnt);
65 break;
66 } else {
67 cnt++;
68 }
69 }
70 return matchFlag;
71 }
72
73 public void show(){
74 if (TaskExecuter.getInstance().getNowTask()!=null){
75 System.out.print("NOW | ");
76 System.out.print(TaskExecuter.getInstance().getNowTask().getSleepTime());
77 System.out.print(" | ");
78 }
79 for (TaskInfo info : list){
80 System.out.print(info.getSleepTime());
81 System.out.print(" | ");
82 }
83 System.out.println();
84 }
85 }