doc: add javadoc to *dto.java
This commit is contained in:
parent
5369465c14
commit
79db47459a
6 changed files with 65 additions and 14 deletions
|
|
@ -1,4 +1,13 @@
|
||||||
package io.github.js0ny.ilp_coursework.data;
|
package io.github.js0ny.ilp_coursework.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the data transfer object for a distance operation request.
|
||||||
|
* <p>
|
||||||
|
* This record encapsulates the data for several endpoints that involves two {@code LngLatDto}
|
||||||
|
* and serves as the data contract for those API operation
|
||||||
|
*
|
||||||
|
* @param position1 Nested object of {@link LngLatDto}
|
||||||
|
* @param position2 Nested object of {@link LngLatDto}
|
||||||
|
*/
|
||||||
public record DistanceRequestDto(LngLatDto position1, LngLatDto position2) {
|
public record DistanceRequestDto(LngLatDto position1, LngLatDto position2) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
package io.github.js0ny.ilp_coursework.data;
|
package io.github.js0ny.ilp_coursework.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the data transfer object for a point or coordinate
|
||||||
|
* that defines by a longitude and latitude
|
||||||
|
*
|
||||||
|
* @param lng longitude of the coordinate/point
|
||||||
|
* @param lat latitude of the coordinate/point
|
||||||
|
*/
|
||||||
public record LngLatDto(double lng, double lat) {
|
public record LngLatDto(double lng, double lat) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,14 @@ package io.github.js0ny.ilp_coursework.data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the data transfer object for a movement action request.
|
* Represents the data transfer object for a movement action request.
|
||||||
* Used for endpoint: `/api/v1/nextPosition`
|
* <p>
|
||||||
|
* This record encapsulates the data for endpoint /api/v1/nextPosition and serves as the data contract for
|
||||||
|
* this API operation
|
||||||
|
*
|
||||||
|
* @param start The starting coordinate of the movement
|
||||||
|
* @param angle The angle to movement in degree. This corresponds to compass directions.
|
||||||
|
* For example: 0 for East, 90 for North
|
||||||
|
* @see io.github.js0ny.ilp_coursework.controller.ApiController#getNextPosition(MovementRequestDto)
|
||||||
*/
|
*/
|
||||||
public record MovementRequestDto(LngLatDto start, double angle) {
|
public record MovementRequestDto(LngLatDto start, double angle) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,16 @@
|
||||||
package io.github.js0ny.ilp_coursework.data;
|
package io.github.js0ny.ilp_coursework.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the data transfer object for a region check request.
|
||||||
|
* <p>
|
||||||
|
* This record encapsulates the data for endpoint /api/v1/isInRegion and serves as the data contract for
|
||||||
|
* this API operation
|
||||||
|
* <p>
|
||||||
|
*
|
||||||
|
* @param position The coordinate to be checked
|
||||||
|
* @param region The region for the check.
|
||||||
|
* This is a nested object represented by {@link RegionDto}
|
||||||
|
* @see io.github.js0ny.ilp_coursework.controller.ApiController#getIsInRegion(RegionCheckRequestDto)
|
||||||
|
*/
|
||||||
public record RegionCheckRequestDto(LngLatDto position, RegionDto region) {
|
public record RegionCheckRequestDto(LngLatDto position, RegionDto region) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,40 @@ package io.github.js0ny.ilp_coursework.data;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the data transfer object for a region definition
|
||||||
|
* <p>
|
||||||
|
* This record encapsulates the data for calculating if a coordinate is inside the region
|
||||||
|
* <p>
|
||||||
|
* A built-in method <code>isClosedTo</code> is defined to check this DTO is valid or not in the mean of closing polygon
|
||||||
|
*
|
||||||
|
* @param name The human-readable name for the region
|
||||||
|
* @param vertices list of coordinates that forms a polygon as a region.
|
||||||
|
* <p>
|
||||||
|
* In order to define a valid region, the last element of the list should be the same as the first, or
|
||||||
|
* known as closed
|
||||||
|
* @see RegionCheckRequestDto
|
||||||
|
* @see io.github.js0ny.ilp_coursework.service.GpsCalculationService#checkIsInRegion(LngLatDto, RegionDto)
|
||||||
|
*/
|
||||||
public record RegionDto(String name, List<LngLatDto> vertices) {
|
public record RegionDto(String name, List<LngLatDto> vertices) {
|
||||||
|
/**
|
||||||
|
* Magic number 4: For a polygon, 3 edges is required.
|
||||||
|
* <p>
|
||||||
|
* In this dto, edges + 1 vertices is required.
|
||||||
|
*/
|
||||||
|
private static final int MINIMUM_VERTICES = 4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to check if the region has a valid polygon by checking if the <code>vertices</code> forms a closed polygon
|
||||||
|
*
|
||||||
|
* @return {@code true} if the <code>vertices</code> are able to form a polygon and form a closed polygon
|
||||||
|
*/
|
||||||
public boolean isClosed() {
|
public boolean isClosed() {
|
||||||
// Magic number 4: For a polygon, 3 edges is required.
|
if (vertices == null || vertices.size() < MINIMUM_VERTICES) {
|
||||||
// In this dto, edges + 1 vertices is required.
|
|
||||||
if (vertices == null || vertices.size() < 4) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
LngLatDto first = vertices.get(0);
|
LngLatDto first = vertices.getFirst();
|
||||||
LngLatDto last = vertices.get(vertices.size() - 1);
|
LngLatDto last = vertices.getLast();
|
||||||
return Objects.equals(last, first);
|
return Objects.equals(last, first);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,4 @@ public class GlobalExceptionHandler {
|
||||||
return Map.of("status", "400", "error", errorMessage);
|
return Map.of("status", "400", "error", errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ExceptionHandler(NullPointerException.class)
|
|
||||||
// @ResponseStatus(HttpStatus.BAD_REQUEST)
|
|
||||||
// public Map<String, String> handleNullPointerException(NullPointerException
|
|
||||||
// ex) {
|
|
||||||
// return Map.of("error", "Invalid JSON request body.");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue