From 6d974b5fa8f580902a707faf1b038466f6a9d5c6 Mon Sep 17 00:00:00 2001
From: Max Geldner <max.sgeldner@t-online.de>
Date: Sat, 1 Dec 2018 15:06:05 +0100
Subject: [PATCH] Fixed lesson sorting issue

---
 .../java/org/owasp/webgoat/lessons/LessonMenuItem.java |  8 ++++++++
 .../org/owasp/webgoat/service/LessonMenuService.java   | 10 ++++++++++
 .../webgoat/plugin/advanced/SqlInjectionAdvanced.java  |  2 +-
 .../webgoat/plugin/introduction/SqlInjection.java      |  2 +-
 .../plugin/mitigation/SqlInjectionMitigations.java     |  2 +-
 .../src/main/java/org/owasp/webgoat/plugin/XXE.java    |  2 +-
 6 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonMenuItem.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonMenuItem.java
index 9313a4c7f..41c45a682 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonMenuItem.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonMenuItem.java
@@ -45,6 +45,7 @@ public class LessonMenuItem {
     private List<LessonMenuItem> children = new ArrayList<LessonMenuItem>();
     private boolean complete;
     private String link;
+    private int ranking;
 //    private boolean showSource = true;
 //    private boolean showHints = true;
 
@@ -156,6 +157,13 @@ public class LessonMenuItem {
         this.link = link;
     }
 
+    public void setRanking(int ranking) {
+        this.ranking = ranking;
+    }
+
+    public int getRanking() {
+        return this.ranking;
+    }
 
 
 }
diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/service/LessonMenuService.java b/webgoat-container/src/main/java/org/owasp/webgoat/service/LessonMenuService.java
index c0cfdc107..507ceaf1c 100644
--- a/webgoat-container/src/main/java/org/owasp/webgoat/service/LessonMenuService.java
+++ b/webgoat-container/src/main/java/org/owasp/webgoat/service/LessonMenuService.java
@@ -43,6 +43,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -86,14 +87,23 @@ public class LessonMenuService {
                 LessonMenuItem lessonItem = new LessonMenuItem();
                 lessonItem.setName(lesson.getTitle());
                 lessonItem.setLink(lesson.getLink());
+                lessonItem.setRanking(lesson.getRanking());
                 lessonItem.setType(LessonMenuItemType.LESSON);
                 LessonTracker lessonTracker = userTracker.getLessonTracker(lesson);
                 lessonItem.setComplete(lessonTracker.isLessonSolved());
                 categoryItem.addChild(lessonItem);
             }
+            categoryItem.getChildren().sort((o1, o2) -> o1.getRanking() - o2.getRanking());
             menu.add(categoryItem);
         }
         return menu;
 
     }
+
+    public class CustomComparator implements java.util.Comparator<Integer> {
+        @Override
+        public int compare(Integer o1, Integer o2) {
+            return o1.compareTo(o2);
+        }
+    }
 }
diff --git a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/advanced/SqlInjectionAdvanced.java b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/advanced/SqlInjectionAdvanced.java
index 5313ac86b..c59f08552 100644
--- a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/advanced/SqlInjectionAdvanced.java
+++ b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/advanced/SqlInjectionAdvanced.java
@@ -48,7 +48,7 @@ public class SqlInjectionAdvanced extends NewLesson {
 
     @Override
     public Integer getDefaultRanking() {
-        return 1;
+        return 2;
     }
 
     @Override
diff --git a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjection.java b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjection.java
index 3a3fc7512..24aea0acb 100644
--- a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjection.java
+++ b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/introduction/SqlInjection.java
@@ -55,7 +55,7 @@ public class SqlInjection extends NewLesson {
 
     @Override
     public Integer getDefaultRanking() {
-        return 1;
+        return 0;
     }
 
     @Override
diff --git a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/mitigation/SqlInjectionMitigations.java b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/mitigation/SqlInjectionMitigations.java
index 2546bfb7f..11dc24fdd 100644
--- a/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/mitigation/SqlInjectionMitigations.java
+++ b/webgoat-lessons/sql-injection/src/main/java/org/owasp/webgoat/plugin/mitigation/SqlInjectionMitigations.java
@@ -48,7 +48,7 @@ public class SqlInjectionMitigations extends NewLesson {
 
     @Override
     public Integer getDefaultRanking() {
-        return 1;
+        return 3;
     }
 
     @Override
diff --git a/webgoat-lessons/xxe/src/main/java/org/owasp/webgoat/plugin/XXE.java b/webgoat-lessons/xxe/src/main/java/org/owasp/webgoat/plugin/XXE.java
index b35433e30..bac04c1f9 100644
--- a/webgoat-lessons/xxe/src/main/java/org/owasp/webgoat/plugin/XXE.java
+++ b/webgoat-lessons/xxe/src/main/java/org/owasp/webgoat/plugin/XXE.java
@@ -53,7 +53,7 @@ public class XXE extends NewLesson {
 
     @Override
     public Integer getDefaultRanking() {
-        return 1;
+        return 4;
     }
 
     @Override