Skip to content

Commit 2a67099

Browse files
authored
Merge pull request #29 from Hayo87/release-polish
Release polish
2 parents 8f09236 + 9563d10 commit 2a67099

30 files changed

Lines changed: 662 additions & 1496 deletions

‎README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
# AutomataExplorer: visualize and compare automata
66

7-
The Automata Explores is a web-based tool to visualize differences and similarities between (finite) state machines. The tool is interactive and helps users to analyze, interpreted and understand the comparison results. The tool offers multiple filters and manipulations to investigate the results from different viewpoints and perspectives. To compare and merge the inputs into the difference automate the [gLTSdiff library](https://github.com/TNO/gLTSdiff) is used. The difference automata is a single combined automata where common parts, reference-only and subject-only are color coded, an example can be found below under preview.
7+
The Automata Explores is a web-based tool to visualize differences and similarities between (finite) state machines. The tool is interactive and helps users to analyze, interpreted and understand the comparison results. The tool offers multiple filters and manipulations to investigate the results from different viewpoints and perspectives. To compare and merge the inputs into the difference automata the [gLTSdiff library](https://github.com/TNO/gLTSdiff) is used. The difference automata is a single combined automata where common parts, reference-only and subject-only are color coded, an example can be found below under preview.
88

9-
This Automata Explores is developed in the context of automata learning and supports two kinds of automata's. A regular automata where the matching for the difference machine is based on the complete label. And the Mealy machine where the matching is based on input and output under the condition that labels are structured as *input/output*. The (backend) build and processing actions are standardized (type based) and therefore easy to extend to support new types or (gLTSDiff) build configurations.
9+
This Automata Explores is developed in the context of automata learning and supports two kinds of automata's. A regular automata where the matching for the difference machine is based on the complete label. And the Mealy machine where the matching is based on input and output under the condition that labels are structured as *input/output*. The (backend) build and processing actions are standardized (type based) and therefore easy to extend to support new types or difference automata build configurations.
1010

1111
## Core features
1212
- **Input** two automata's in the [`.dot format`](https://graphviz.org/doc/info/lang.html) and visualize the difference machine.
1313
- Select a **layout algorithm** that is most suitable for the visualization.
1414
- Use **filters** and/or custom **processing actions** to investigate the result.
15-
- Use the **context menu** options on visualization elements to work through the result or get detailed element information.
15+
- Use the **context menu** options on visualization elements analyze the automata or to get detailed element information.
1616
- **Export** the result as a `.pgn` or comprehensive `.pdf` report.
1717

1818
## Preview

‎backend/src/main/java/io/github/Hayo87/controller/GlobalExceptionHandler.java‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ public ResponseEntity<ErrorDTO> handleBadRequest(BadRequestException e) {
3636
.body(new ErrorDTO("Invalid request: " + e.getMessage(), HttpStatus.BAD_REQUEST.value()));
3737
}
3838

39-
40-
41-
4239
/**
4340
* Handles validation failures for request DTOs annotated with {@code @Valid}
4441
*

‎backend/src/main/java/io/github/Hayo87/domain/handlers/AbstractDiffHandler.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static record ActionKey(Type type, SubType subtype) {}
2626
* Builds the action registry by associating each supported pair
2727
* with the corresponing processor.
2828
*/
29-
public AbstractDiffHandler(List<DiffAutomatonProcessor<T>> processors) {
29+
protected AbstractDiffHandler(List<DiffAutomatonProcessor<T>> processors) {
3030
this.actionRegistry = processors.stream()
3131
.flatMap(p -> p.keys().stream().map(key -> Map.entry(key, p)))
3232
.collect(Collectors.toMap(

‎docs/functionality.md‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Functionality
22
This page describes the functionality provide by the **AutomataExplorer** by page.
33

4-
54
## Upload Page
65
<img src="img/UploadPage.png" alt="Upload Page" width="400"/>
76

@@ -44,16 +43,15 @@ Adjust the visualization using processing actions which modify the inputs or out
4443
- `Value`: the value(s) for the action.
4544

4645
#### Export
47-
- Export the visualization as a `.pgn`file.
48-
- Export the comparison result as a pfd report with the match results, image and table with transitions per type.
46+
- Export the visualization as a `.pgn` image file.
47+
- Export the comparison result as a `.pdf` report with the match results, an image and a structured tabular with the edges.
4948

5049
#### About
5150
Display the about information.
5251

5352
#### Exit
5453
Exit the visualization and return to the upload page.
5554

56-
5755
### Context Menu
5856
On right click on nodes or edges a [context menu](https://github.com/cytoscape/cytoscape.js-cxtmenu) is presented.
5957

@@ -64,4 +62,4 @@ On right click on nodes or edges a [context menu](https://github.com/cytoscape/c
6462
- Open info modal - display element information in a Modal.
6563
- Show / hide pie chart - display node as pie chart based on connected edges (node only)
6664
- Show neighbors - highlight connected transitions and edges.
67-
- Show / hide label - put label on node with a custom text (node only).
65+
- Show / hide label - put label on node with a custom text (node only).

‎docs/getting-started.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11

22
# Getting Started
3-
43
The application consist of a a Spring Boot backend and a React frontend. The setup is dockerized for easy deployment and usage. This guide will help you to run the Automata Explorer using Docker for regular users as well as developers.
54

65
## 👤 For Users

‎docs/structure-and-architecture.md‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ AutomataExplorer/
2323
└── README.md # Root for project documentation
2424
```
2525

26-
2726
## Backend
2827
The Spring Boot backend exposes its functionality via a RESTfull api allowing clients to interact over HTTP using JSON.
2928

@@ -37,11 +36,9 @@ The Spring Boot backend exposes its functionality via a RESTfull api allowing cl
3736

3837
A detailed API description for the backend services with all the endpoints and messages can be found [here](/docs/api.md).
3938

40-
4139
### Controller
4240
The `restcontoller` handles all incoming HTTP request and acts as an entry point for the backend application. In the controller endpoints are mapped methods and request are orchestrated and delegated to the appropriate services. To decouple the internal (domain) model from the external API `Data Transfer Objects (DTOs)` are used. The `DTOs` define the JSON structures for the request and response messages used by the controller.
4341

44-
4542
### Services
4643
The `service` layer contains the core logic for the Automata Explorer. The services generalized and designed with type-based components to support extensibility.
4744

@@ -70,10 +67,8 @@ The `ProcessingModel` contains the enumeration types and data structures for the
7067
- The backend is equipped with an interactive Swagger UI for exploring and testing the REST API. The UI is available at `http://localhost:8080/swagger-ui/index.html#/`. This UI will show all available endpoints as well as all the request and response formats. The API can also be used from the browser directly. The openApi file can be downloaded via `http://localhost:8080/v3/api-docs`.
7168
- The backend the Grapviz dot tool to parse the input files. All files which conform to this specification will be parsed successfully.
7269

73-
7470
### Tests
7571
Automatic testing is part of the overall applications build pipeline using gitHub actions. About 60 test cases are crafted to validate the backend implementation.
76-
7772
- The controller is test using the `@webMvcTest`to validate the HTTPS request and response handling in isolation.
7873
- The services are tested to validate the common business logic using `@SpringBootTest`, `Mockito` and `JUnit`.
7974
- Integration test are performed to combine multiple behaviors to validate real workflows and edge cases.
@@ -86,13 +81,12 @@ The frontend is built using React and Vite and written in typescript. The fronte
8681
2. The frontend sends the request to the backend and initiates the build without any processing actions.
8782
3. The frontend routes to the `VisualizationPage` loads the visualization and displays the build results.
8883
4. The user can filter, change layout, select context menu actions and or modify the modal.
89-
5. The user exits the application, the fronent sent a session close request to the backend.
84+
5. The user exits the application, the frontend sent a session close request to the backend.
9085

9186
### API
9287
- `SessionApi.tsx`: Utility for sending messages to the backend API and to enforce proper exception handling.
9388
- `RequestResponse`: Contains all interfaces for the messages exchanged with the backend.
9489

95-
9690
### Hooks
9791
- `useSession`: Custom react hook that manages the state and encapsulates all communication with the backend API by leveraging the `sessionApi,tsx`.
9892
- `useTransform`: Custom react hook to transform backend responses to usable data for the visualization. It decouples raw API data from rendering and visualization logic.
@@ -103,5 +97,5 @@ The frontend is built using React and Vite and written in typescript. The fronte
10397

10498
### Components
10599
- `InfoModal`: a general Modal to be used in the application which can handle different inner contents such as `AboutContent`, `ActionContent`, `BuildContent` and `ElementContent`.
106-
- `CytoscapeVisualization`: The action visualization component. To prevent the file to be bloated congifuration are implemented in the utils classes `attachContextCollapse`, `attachCytoscapeMenus`, `cytoScapeStyles` and `exportPdfs`.
100+
- `CytoscapeCanvas`: The action visualization component. To prevent the file to be bloated configuration are implemented in the utils classes `attachContextCollapse`, `attachCytoscapeMenus`, `cytoScapeStyles` and `exportPdfs`.
107101
- `DragAndDrop`: a drag and drop file upload element to be used in the `UploadPage`.

‎frontend/README.md‎

Lines changed: 0 additions & 50 deletions
This file was deleted.

‎frontend/nginx.conf‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ server {
99
}
1010

1111
location /api/ {
12-
proxy_pass http://backend:8080/; # Match service name in docker-compose.yml
12+
proxy_pass http://backend:8080/;
1313
proxy_set_header Host $host;
1414
proxy_set_header X-Real-IP $remote_addr;
1515
}

0 commit comments

Comments
 (0)