From 133e4f48c03085399e85a9a3f23f1ea3c174817b Mon Sep 17 00:00:00 2001
From: Nils Vreman <nils.vreman@gmail.com>
Date: Fri, 9 Nov 2018 10:43:49 +0100
Subject: [PATCH] Added fixedpriority strategy to the strategy pool

---
 Makefile                              |  1 +
 gui/menu/FPStrategyMenuItem.java      | 10 ++++++
 gui/menu/ScheduLearnMenuBar.java      |  1 +
 strategy/FixedPriority.java           | 49 +++++++++++++++++++++++++++
 strategy/FixedPriorityComparator.java | 13 +++++++
 5 files changed, 74 insertions(+)
 create mode 100644 gui/menu/FPStrategyMenuItem.java
 create mode 100644 strategy/FixedPriority.java
 create mode 100644 strategy/FixedPriorityComparator.java

diff --git a/Makefile b/Makefile
index da33b85..b75019f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,7 @@
 all:
 	javac gui/ScheduLearn.java
 	java gui.ScheduLearn
+	find . -name "*.class" -type f -delete
 
 clean:
 	find . -name "*.class" -type f -delete
diff --git a/gui/menu/FPStrategyMenuItem.java b/gui/menu/FPStrategyMenuItem.java
new file mode 100644
index 0000000..e474076
--- /dev/null
+++ b/gui/menu/FPStrategyMenuItem.java
@@ -0,0 +1,10 @@
+package gui.menu;
+
+import model.SchedulingModel;
+import strategy.FixedPriority;
+
+public class FPStrategyMenuItem extends StrategyMenuItem {
+    public FPStrategyMenuItem(SchedulingModel scheduleMdl) {
+        super(scheduleMdl, new FixedPriority(), "FP");
+    }
+}
diff --git a/gui/menu/ScheduLearnMenuBar.java b/gui/menu/ScheduLearnMenuBar.java
index 7c77c2e..dc1e5cd 100644
--- a/gui/menu/ScheduLearnMenuBar.java
+++ b/gui/menu/ScheduLearnMenuBar.java
@@ -26,6 +26,7 @@ public class ScheduLearnMenuBar extends JMenuBar {
         edit.add(new ClearTasksetMenuItem(taskset));
         edit.add(new ClearAllMenuItem(scheduleMdl));
         strategy.add(new NoneStrategyMenuItem(scheduleMdl));
+        strategy.add(new FPStrategyMenuItem(scheduleMdl));
         strategy.add(new EDFStrategyMenuItem(scheduleMdl));
         strategy.add(new RMSStrategyMenuItem(scheduleMdl));
 
diff --git a/strategy/FixedPriority.java b/strategy/FixedPriority.java
new file mode 100644
index 0000000..ad0485a
--- /dev/null
+++ b/strategy/FixedPriority.java
@@ -0,0 +1,49 @@
+package strategy;
+
+import tasks.Taskset;
+import tasks.Task;
+
+import java.util.Comparator;
+import java.util.Queue;
+import java.util.PriorityQueue;
+import java.util.Map;
+import java.util.HashMap;
+
+public class FixedPriority extends QueueStrategy {
+
+    protected Queue<Integer> updateQueue(Queue<Integer> q, Taskset ts, int time) {
+        Comparator<Integer> order = 
+            (Integer i1, Integer i2) -> {
+                return i1 - i2;
+            };
+
+        Queue<Integer> internalQ = new PriorityQueue<>(order);
+        while (q.size() != 0) internalQ.add(q.poll()); 
+
+        //If we are at a job release, add that much CPU usage to the Q.
+        for (int taskNbr : ts.getPriorities()) {
+            Task t = ts.getTask(taskNbr).get(); //I know it exists so I can collect it from the optional directly
+            if (time % t.period() == 0) {
+                for (int i = 0; i < t.exectime(); i++) {
+                    internalQ.add(taskNbr);
+                }
+            }
+        }
+
+        return internalQ;
+    }
+
+    /*
+     * Return which Strategy you are using
+     */
+    public String toString() {
+        return "FP";
+    }
+
+    /*
+     * Return a Comparator for this scheduling strategy
+     */
+    public Comparator<Task> prioComparator() {
+        return new FixedPriorityComparator();
+    }
+}
diff --git a/strategy/FixedPriorityComparator.java b/strategy/FixedPriorityComparator.java
new file mode 100644
index 0000000..6fb0325
--- /dev/null
+++ b/strategy/FixedPriorityComparator.java
@@ -0,0 +1,13 @@
+package strategy;
+
+import tasks.Task;
+
+public class FixedPriorityComparator implements PriorityComparator {
+
+    /*
+     * compares two tasks according to scheduling algorithm.
+     */
+    public int compare(Object o1, Object o2) {
+        return 1;
+    }
+}
-- 
GitLab