diff --git a/todolist/config/spotbugs/exclude.xml b/todolist/config/spotbugs/exclude.xml new file mode 100644 index 0000000000000000000000000000000000000000..e10c615e8d797fb3c89ba5554e17d8a60efb60f8 --- /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 70d43d8e329e36d58a6377b6ebca7783f8d1b640..5aab5ecb06c58b7178f6177ee1637385dd9aeff1 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 a69c47b49bedc0586a2fde364fbfffd2eb718359..ff4f8268f17c25b391decfe102b439ad1c8b8c07 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 9bff89e6c3ee641a931014492791164ee509d52b..456e27e7aa8a348773e42e04043f2f49571c947e 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 81fa81eac8b60f894de053e7e84287ffe66675ef..0e3424b992f32b20c2bce35d247676ee2c8b9196 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 b9730ccf6c8827cac1b855780714095661f48c54..a6958ff5fe2edd73e51bfe0c840ccfd4de900700 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 3223e8a14cbebd218aa099107457d1743d5432a0..0eb783245557926976711c48982808de6ffb3d0d 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 d77155c9c999cf6b4462e7128a7cdbca036049ce..83eeaac9f75ab35e0a0d364c11a9c52375ba28b5 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 f42bf42121d9f1c98de07c3e42328380b3b68fec..409f1ed09f91291d9c695276f55b86301bc644e3 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 4c987183af15643780735baed224dbab8b4023d6..df9a6c8209521b4b88413a5321ff49b08fce580f 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 6a849cd9474335c0c98d6eed94118af2ee1f3436..f25325c8168a9d608c782f106e739478e7114919 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 f469e16b50433d6c0a62a9af86a72c65a95f5e67..374c38935e2c273901e0e9d0d9e5313ed88b6784 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>