use of gov.usgs.cida.coastalhazards.jpa.AliasManager in project coastal-hazards by USGS-CIDA.
the class AliasResource method getItemForAlias.
@GET
@Path("/{id}/item")
@Produces(MediaType.APPLICATION_JSON)
public Response getItemForAlias(@PathParam("id") String id, @DefaultValue("false") @QueryParam("subtree") boolean subtree, @Context Request request) {
Response response = null;
try (AliasManager aliasManager = new AliasManager()) {
Alias alias = aliasManager.load(id);
Item item = null;
try (StatusManager statusMan = new StatusManager()) {
try (ItemManager itemManager = new ItemManager()) {
item = itemManager.load(alias.getItemId());
}
if (item == null) {
throw new NotFoundException();
} else {
// Check when the item and/or structure was last modified, if at all.
// - If both are null, use today's date.
// - If one of the two is not null, use that.
// - Else, if both are not null, use the latest between them.
Status lastItemUpdate = statusMan.load(Status.StatusName.ITEM_UPDATE);
Status lastStructureUpdate = statusMan.load(Status.StatusName.STRUCTURE_UPDATE);
Date modified = new Date();
if (lastItemUpdate != null && lastStructureUpdate != null) {
// Both updates exist, so compare between them and choose the latest
Date lastItemUpdateDate = lastItemUpdate.getLastUpdate();
Date lastStructureUpdateDate = lastStructureUpdate.getLastUpdate();
modified = lastItemUpdateDate.after(lastStructureUpdateDate) ? lastItemUpdateDate : lastStructureUpdateDate;
} else {
// least one exists and use that.
if (lastItemUpdate != null) {
modified = lastItemUpdate.getLastUpdate();
}
if (lastStructureUpdate != null) {
modified = lastStructureUpdate.getLastUpdate();
}
}
Response unmodified = HTTPCachingUtil.checkModified(request, modified);
if (unmodified != null) {
response = unmodified;
} else {
String jsonResult = item.toJSON(subtree);
response = Response.ok(jsonResult, MediaType.APPLICATION_JSON_TYPE).lastModified(modified).build();
}
}
}
}
return response;
}
use of gov.usgs.cida.coastalhazards.jpa.AliasManager in project coastal-hazards by USGS-CIDA.
the class AliasResource method updateAlias.
@RolesAllowed({ CoastalHazardsTokenBasedSecurityFilter.CCH_ADMIN_ROLE })
@PUT
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response updateAlias(@PathParam("id") String id, String content, @Context HttpServletRequest request) {
Response response = null;
Alias newAlias = Alias.fromJSON(content);
try (AliasManager manager = new AliasManager()) {
Alias alias = manager.load(id);
if (alias != null) {
alias.setItemId(newAlias.getItemId());
manager.update(alias);
response = Response.ok(GsonUtil.getDefault().toJson(alias, Alias.class), MediaType.APPLICATION_JSON_TYPE).build();
} else {
throw new NotFoundException();
}
}
return response;
}
use of gov.usgs.cida.coastalhazards.jpa.AliasManager in project coastal-hazards by USGS-CIDA.
the class AliasResource method getAliasesForItem.
@GET
@Path("/item/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response getAliasesForItem(@PathParam("id") String itemId) {
Response response = null;
try (AliasManager manager = new AliasManager()) {
List<Alias> aliasList = manager.getAliasesForItemId(itemId);
Gson gson = GsonUtil.getDefault();
response = Response.ok(gson.toJson(aliasList, List.class), MediaType.APPLICATION_JSON_TYPE).build();
}
return response;
}
use of gov.usgs.cida.coastalhazards.jpa.AliasManager in project coastal-hazards by USGS-CIDA.
the class AliasResource method postAlias.
@RolesAllowed({ CoastalHazardsTokenBasedSecurityFilter.CCH_ADMIN_ROLE })
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response postAlias(String content, @Context HttpServletRequest request) {
Response response;
Alias alias = Alias.fromJSON(content);
String aliasId = alias != null ? alias.getId() : null;
try (AliasManager aliasManager = new AliasManager()) {
Alias savedAlias = aliasManager.load(alias.getId());
if (savedAlias == null) {
aliasId = aliasManager.save(alias);
}
} catch (RollbackException r) {
response = Response.status(417).build();
return response;
} catch (Exception e) {
throw new Error();
}
if (null == aliasId) {
throw new Error();
} else {
response = Response.ok(GsonUtil.getDefault().toJson(alias, Alias.class), MediaType.APPLICATION_JSON_TYPE).build();
}
return response;
}
use of gov.usgs.cida.coastalhazards.jpa.AliasManager in project coastal-hazards by USGS-CIDA.
the class PrintRouter method useAliasInfoPrintViewJsp.
@GET
@Produces(MediaType.TEXT_HTML)
@Path("/alias/{aliasId}")
public Response useAliasInfoPrintViewJsp(@PathParam("aliasId") String aliasId) {
Map<String, Object> map = new HashMap<>();
try (ItemManager mgr = new ItemManager();
AliasManager amgr = new AliasManager()) {
Alias alias = amgr.load(aliasId);
if (alias != null) {
Item item = mgr.load(alias.getItemId());
if (item == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
map.put("item", item);
map.put("alias", alias);
return Response.ok(new Viewable("/WEB-INF/jsp/ui/back/index-print.jsp", map)).build();
} else {
return Response.status(Response.Status.NOT_FOUND).build();
}
}
}
Aggregations