From 8f92af97fc65a5ec4b0586d1aa3f33b3e1120db8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hallvard=20Tr=C3=A6tteberg?= <hal@ntnu.no>
Date: Sat, 25 Sep 2021 17:43:27 +0000
Subject: [PATCH] Handled most checkstyle and spotbugs issues

---
 todolist/config/spotbugs/exclude.xml          | 11 ++++++++
 todolist/fxui/pom.xml                         |  7 +++++
 .../src/main/java/todolist/ui/TodoApp.java    |  3 +++
 .../java/todolist/ui/TodoAppController.java   | 26 ++++++++++++++++---
 .../java/todolist/ui/TodoDocumentApp.java     |  3 +++
 .../ui/TodoDocumentAppController.java         |  3 +++
 .../java/todolist/ui/TodoItemListCell.java    |  4 +++
 .../java/todolist/ui/TodoListController.java  |  6 ++++-
 .../java/todolist/ui/TodoModelController.java |  7 ++++-
 .../java/todolist/ui/TodoModelStorage.java    |  3 +++
 .../main/java/todolist/ui/TodoRemoteApp.java  |  3 +++
 todolist/pom.xml                              |  1 +
 12 files changed, 72 insertions(+), 5 deletions(-)
 create mode 100644 todolist/config/spotbugs/exclude.xml

diff --git a/todolist/config/spotbugs/exclude.xml b/todolist/config/spotbugs/exclude.xml
new file mode 100644
index 0000000..e10c615
--- /dev/null
+++ b/todolist/config/spotbugs/exclude.xml
@@ -0,0 +1,11 @@
+<FindBugsFilter>
+    <Match>
+        <Bug pattern="SA_LOCAL_SELF_COMPARISON" />
+    </Match>
+    <Match>
+        <Bug pattern="EI_EXPOSE_REP" />
+    </Match>
+    <Match>
+        <Bug pattern="EI_EXPOSE_REP2" />
+    </Match>
+</FindBugsFilter>
diff --git a/todolist/fxui/pom.xml b/todolist/fxui/pom.xml
index 70d43d8..5aab5ec 100644
--- a/todolist/fxui/pom.xml
+++ b/todolist/fxui/pom.xml
@@ -11,6 +11,10 @@
 
     <artifactId>fxui</artifactId>
 
+    <properties>
+        <skipUiTests>false</skipUiTests>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>it1901.todolist</groupId>
@@ -173,6 +177,9 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>${skipUiTests}</skipTests>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.openjfx</groupId>
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoApp.java b/todolist/fxui/src/main/java/todolist/ui/TodoApp.java
index a69c47b..ff4f826 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoApp.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoApp.java
@@ -6,6 +6,9 @@ import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
 
+/**
+ * Standalone version of the app.
+ */
 public class TodoApp extends Application {
 
   @Override
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoAppController.java b/todolist/fxui/src/main/java/todolist/ui/TodoAppController.java
index 9bff89e..456e27e 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoAppController.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoAppController.java
@@ -14,11 +14,31 @@ import todolist.core.TodoList;
 import todolist.core.TodoModel;
 import todolist.json.TodoPersistence;
 
+/**
+ * Top-level controller.
+ */
 public class TodoAppController {
 
-  private static final String todoListWithTwoItems =
-      "{\"lists\":[" + "{\"name\":\"todo\",\"items\":[{\"text\":\"item1\",\"checked\":false},"
-          + "{\"text\":\"item2\",\"checked\":true,\"deadline\":\"2020-10-01T14:53:11\"}]}" + "]}";
+  private static final String todoListWithTwoItems = """
+      {
+        "lists" : [
+          {
+            "name": "todo",
+            "items": [
+              {
+                "text": "item1",
+                "checked":false
+              },
+              {
+                "text": "item2",
+                "checked": true,
+                "deadline": "2020-10-01T14:53:11"
+              }
+            ]
+          }
+        ]
+      }
+      """;
 
   @FXML
   String userTodoModelPath;
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoDocumentApp.java b/todolist/fxui/src/main/java/todolist/ui/TodoDocumentApp.java
index 81fa81e..0e3424b 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoDocumentApp.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoDocumentApp.java
@@ -6,6 +6,9 @@ import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
 
+/**
+ * Variant of the app with document metaphor and File menu.
+ */
 public class TodoDocumentApp extends Application {
 
   private TodoDocumentAppController controller;
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoDocumentAppController.java b/todolist/fxui/src/main/java/todolist/ui/TodoDocumentAppController.java
index b9730cc..a6958ff 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoDocumentAppController.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoDocumentAppController.java
@@ -18,6 +18,9 @@ import java.util.List;
 import javafx.fxml.FXML;
 import todolist.core.TodoModel;
 
+/**
+ * Controller for the document metaphor variant of the app.
+ */
 public class TodoDocumentAppController implements DocumentListener<TodoModel, File> {
 
   private final TodoModelStorage todoModelStorage;
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoItemListCell.java b/todolist/fxui/src/main/java/todolist/ui/TodoItemListCell.java
index 3223e8a..0eb7832 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoItemListCell.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoItemListCell.java
@@ -10,6 +10,10 @@ import javafx.scene.control.TextField;
 import javafx.scene.layout.HBox;
 import todolist.core.TodoItem;
 
+/**
+ * ListCell for TodoItems.
+ * Supports editing the text and checking the item.
+ */
 public class TodoItemListCell extends ListCell<TodoItem> {
 
   // for whole row
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoListController.java b/todolist/fxui/src/main/java/todolist/ui/TodoListController.java
index d77155c..83eeaac 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoListController.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoListController.java
@@ -15,6 +15,10 @@ import todolist.core.TodoItem;
 import todolist.core.TodoList;
 import todolist.core.TodoListListener;
 
+/**
+ * Controller for a TodoList.
+ * Supports adding, editing and removing elements.
+ */
 public class TodoListController {
 
   @FXML
@@ -33,7 +37,7 @@ public class TodoListController {
 
   private TodoList todoList = null;
 
-  public TodoList getTodoList() {
+  TodoList getTodoList() {
     return todoList;
   }
 
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java b/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
index f42bf42..409f1ed 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
@@ -8,6 +8,11 @@ import javafx.scene.control.ComboBox;
 import todolist.core.AbstractTodoList;
 import todolist.core.TodoList;
 
+/**
+ * Controller for TodoModel objects.
+ * Supports adding new TodoList objects and
+ * selecting one for viewing and editing.
+ */
 public class TodoModelController {
 
   private TodoModelAccess todoModelAccess;
@@ -73,7 +78,7 @@ public class TodoModelController {
           // retrieve actual list
           todoList = todoModelAccess.getTodoList(todoList.getName());
         }
-        todoListViewController.setTodoList(todoList instanceof TodoList ? (TodoList) todoList : null);
+        todoListViewController.setTodoList(todoList instanceof TodoList tl ? tl : null);
       }
     });
   }
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoModelStorage.java b/todolist/fxui/src/main/java/todolist/ui/TodoModelStorage.java
index 4c98718..df9a6c8 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoModelStorage.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoModelStorage.java
@@ -12,6 +12,9 @@ import java.nio.charset.StandardCharsets;
 import todolist.core.TodoModel;
 import todolist.json.TodoPersistence;
 
+/**
+ * DocumentStorage for TodoModel objects addressed by File.
+ */
 public class TodoModelStorage extends AbstractDocumentStorage<TodoModel, File> {
 
   @Override
diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoRemoteApp.java b/todolist/fxui/src/main/java/todolist/ui/TodoRemoteApp.java
index 6a849cd..f25325c 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoRemoteApp.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoRemoteApp.java
@@ -6,6 +6,9 @@ import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
 
+/**
+ * Variant of the app that connects to a REST service.
+ */
 public class TodoRemoteApp extends Application {
 
   @Override
diff --git a/todolist/pom.xml b/todolist/pom.xml
index f469e16..374c389 100644
--- a/todolist/pom.xml
+++ b/todolist/pom.xml
@@ -118,6 +118,7 @@
                     <configuration>
                         <xmlOutput>false</xmlOutput>
                         <htmlOutput>true</htmlOutput>
+                        <excludeFilterFile>config/spotbugs/exclude.xml</excludeFilterFile>
                     </configuration>
                     <executions>
                         <execution>
-- 
GitLab