Skip to content
Snippets Groups Projects
Commit b40ffb65 authored by Powers, Peter M.'s avatar Powers, Peter M.
Browse files

merged mfd and feature logic tree services

parent 07000451
No related branches found
No related tags found
2 merge requests!672Production Release | nshmp-haz,!671Logic tree endpoint updates
...@@ -5,7 +5,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody; ...@@ -5,7 +5,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody;
import gov.usgs.earthquake.nshmp.www.ServletUtil; import gov.usgs.earthquake.nshmp.www.ServletUtil;
import gov.usgs.earthquake.nshmp.www.source.FeaturesService.Metadata; import gov.usgs.earthquake.nshmp.www.source.FeaturesService.Metadata;
import gov.usgs.earthquake.nshmp.www.source.FeaturesService.RequestData; import gov.usgs.earthquake.nshmp.www.source.FeaturesService.RequestData;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Controller;
...@@ -19,8 +18,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; ...@@ -19,8 +18,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.inject.Inject; import jakarta.inject.Inject;
/** /**
* Micronaut web service controller for the GeoJSON features in the current * Micronaut web service controller for the GeoJSON features in the installed
* installed model. * model.
* *
* <p>See src/main/resources/application.yml nshmp-haz.model-path for installed * <p>See src/main/resources/application.yml nshmp-haz.model-path for installed
* model. * model.
...@@ -39,6 +38,13 @@ public class FeaturesController { ...@@ -39,6 +38,13 @@ public class FeaturesController {
@Inject @Inject
private NshmpMicronautServlet servlet; private NshmpMicronautServlet servlet;
/*
* Not sure we need metadata for this. Issue #542 describes the various groups
* that could be supported. However instead of 'all' one could consider just
* having no argument such that the root endpoint path would just return all
* features.
*/
@Operation( @Operation(
summary = "Source model logic tree listing", summary = "Source model logic tree listing",
description = "Returns the ID's of logic trees in the model", description = "Returns the ID's of logic trees in the model",
...@@ -50,6 +56,7 @@ public class FeaturesController { ...@@ -50,6 +56,7 @@ public class FeaturesController {
schema = @Schema( schema = @Schema(
implementation = MetadataResponse.class))) implementation = MetadataResponse.class)))
@Get @Get
@Deprecated
public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { public HttpResponse<String> doGetMetadata(HttpRequest<?> http) {
try { try {
return FeaturesService.getMetadata(http); return FeaturesService.getMetadata(http);
...@@ -74,6 +81,7 @@ public class FeaturesController { ...@@ -74,6 +81,7 @@ public class FeaturesController {
content = @Content( content = @Content(
schema = @Schema(implementation = TreeResponse.class))) schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/{id}") @Get(uri = "/{id}")
@Deprecated
public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) {
try { try {
return FeaturesService.getTree(http, id); return FeaturesService.getTree(http, id);
......
...@@ -10,7 +10,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody; ...@@ -10,7 +10,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody;
import gov.usgs.earthquake.nshmp.www.ResponseMetadata; import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
import gov.usgs.earthquake.nshmp.www.ServletUtil; import gov.usgs.earthquake.nshmp.www.ServletUtil;
import gov.usgs.earthquake.nshmp.www.source.SourceService.SourceModel; import gov.usgs.earthquake.nshmp.www.source.SourceService.SourceModel;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -26,6 +25,7 @@ public class FeaturesService { ...@@ -26,6 +25,7 @@ public class FeaturesService {
static final String NAME = "Model Features"; static final String NAME = "Model Features";
static final Logger LOG = LoggerFactory.getLogger(FeaturesService.class); static final Logger LOG = LoggerFactory.getLogger(FeaturesService.class);
@Deprecated
public static HttpResponse<String> getMetadata(HttpRequest<?> request) { public static HttpResponse<String> getMetadata(HttpRequest<?> request) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var metadata = new Metadata(ServletUtil.model()); var metadata = new Metadata(ServletUtil.model());
...@@ -39,6 +39,7 @@ public class FeaturesService { ...@@ -39,6 +39,7 @@ public class FeaturesService {
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
@Deprecated
public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) { public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var features = Models.features(ServletUtil.model(), id); var features = Models.features(ServletUtil.model(), id);
......
...@@ -5,7 +5,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody; ...@@ -5,7 +5,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody;
import gov.usgs.earthquake.nshmp.www.ServletUtil; import gov.usgs.earthquake.nshmp.www.ServletUtil;
import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.Metadata; import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.Metadata;
import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.RequestData; import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.RequestData;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller; import io.micronaut.http.annotation.Controller;
...@@ -19,8 +18,9 @@ import io.swagger.v3.oas.annotations.tags.Tag; ...@@ -19,8 +18,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.inject.Inject; import jakarta.inject.Inject;
/** /**
* Micronaut web service controller for the source logic trees in the current * Micronaut web service controller for the source logic trees in the installed
* installed model. * model. These endpoints return the GeoJSON features and Magnitude frequency
* distributions associated with the branches in a source logic tree.
* *
* <p>See src/main/resources/application.yml nshmp-haz.model-path for installed * <p>See src/main/resources/application.yml nshmp-haz.model-path for installed
* model. * model.
...@@ -41,7 +41,7 @@ public class LogicTreesController { ...@@ -41,7 +41,7 @@ public class LogicTreesController {
@Operation( @Operation(
summary = "Source model logic tree listing", summary = "Source model logic tree listing",
description = "Returns the ID's of logic trees in the model", description = "Returns the IDs of logic trees in the model",
operationId = "source-tree-metadata") operationId = "source-tree-metadata")
@ApiResponse( @ApiResponse(
description = "Source logic tree metadata", description = "Source logic tree metadata",
...@@ -67,16 +67,65 @@ public class LogicTreesController { ...@@ -67,16 +67,65 @@ public class LogicTreesController {
@Operation( @Operation(
summary = "Get a source model MFD logic tree", summary = "Get a source model MFD logic tree",
description = "Returns the logic tree of MFDs for the supplied ID", description = "Returns the logic tree of MFDs for the supplied ID",
operationId = "source-tree-mfds") operationId = "source-tree-mfds-old")
@ApiResponse( @ApiResponse(
description = "NSHM source logic tree", description = "NSHM source logic tree",
responseCode = "200", responseCode = "200",
content = @Content( content = @Content(
schema = @Schema(implementation = TreeResponse.class))) schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/{id}") @Get(uri = "/{id}")
@Deprecated
public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) {
try { try {
return LogicTreesService.getTree(http, id); return LogicTreesService.getMfdTree(http, id);
} catch (Exception e) {
return ServletUtil.error(
LogicTreesService.LOG, e,
LogicTreesService.NAME,
http.getUri().toString());
}
}
/**
* @param id Source logic tree id
*/
@Operation(
summary = "Get a source model feature logic tree",
description = "Returns the logic tree of features for the supplied ID",
operationId = "source-tree-features")
@ApiResponse(
description = "NSHM source logic tree",
responseCode = "200",
content = @Content(
schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/features/{id}")
public HttpResponse<String> doGetFeatureTree(HttpRequest<?> http, @PathVariable int id) {
try {
return LogicTreesService.getFeatureTree(http, id);
} catch (Exception e) {
return ServletUtil.error(
LogicTreesService.LOG, e,
LogicTreesService.NAME,
http.getUri().toString());
}
}
/**
* @param id Source logic tree id
*/
@Operation(
summary = "Get a source model MFD logic tree",
description = "Returns the logic tree of MFDs for the supplied ID",
operationId = "source-tree-mfds")
@ApiResponse(
description = "NSHM source logic tree",
responseCode = "200",
content = @Content(
schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/mfds/{id}")
public HttpResponse<String> doGetMfdTree(HttpRequest<?> http, @PathVariable int id) {
try {
return LogicTreesService.getMfdTree(http, id);
} catch (Exception e) { } catch (Exception e) {
return ServletUtil.error( return ServletUtil.error(
LogicTreesService.LOG, e, LogicTreesService.LOG, e,
......
...@@ -10,7 +10,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody; ...@@ -10,7 +10,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseBody;
import gov.usgs.earthquake.nshmp.www.ResponseMetadata; import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
import gov.usgs.earthquake.nshmp.www.ServletUtil; import gov.usgs.earthquake.nshmp.www.ServletUtil;
import gov.usgs.earthquake.nshmp.www.source.SourceService.SourceModel; import gov.usgs.earthquake.nshmp.www.source.SourceService.SourceModel;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
...@@ -39,16 +38,30 @@ public class LogicTreesService { ...@@ -39,16 +38,30 @@ public class LogicTreesService {
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) { public static HttpResponse<String> getFeatureTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString();
var featureTree = Models.features(ServletUtil.model(), id);
var requestData = new RequestData(id);
var response = ResponseBody.success()
.name(NAME)
.url(url)
.metadata(new ResponseMetadata(HazVersion.appVersions()))
.request(requestData)
.response(featureTree)
.build();
return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
}
public static HttpResponse<String> getMfdTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var tree = Models.tree(ServletUtil.model(), id); var mfdTree = Models.tree(ServletUtil.model(), id);
var requestData = new RequestData(id); var requestData = new RequestData(id);
var response = ResponseBody.success() var response = ResponseBody.success()
.name(NAME) .name(NAME)
.url(url) .url(url)
.metadata(new ResponseMetadata(HazVersion.appVersions())) .metadata(new ResponseMetadata(HazVersion.appVersions()))
.request(requestData) .request(requestData)
.response(tree) .response(mfdTree)
.build(); .build();
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment