Skip to content

Commit

Permalink
FMD-98 implement improved client logger
Browse files Browse the repository at this point in the history
  • Loading branch information
robo-w committed Jul 21, 2019
1 parent ac1e97b commit 4bebe5c
Show file tree
Hide file tree
Showing 16 changed files with 392 additions and 189 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package at.wrk.coceso.contract.client;

import at.wrk.coceso.contract.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;

/**
* JS logging functionality
*/
public class ClientLog {

private final String message;
private final String url;
private final Integer codeLine;
private final Integer codeColumn;
private final String stack;
private final ClientLogLevel logLevel;

@JsonCreator
public ClientLog(
@JsonProperty("message") final String message,
@JsonProperty("url") final String url,
@JsonProperty("codeLine") final Integer codeLine,
@JsonProperty("codeColumn") final Integer codeColumn,
@JsonProperty("stack") final String stack,
@JsonProperty("logLevel") final ClientLogLevel logLevel) {
this.message = message;
this.url = url;
this.codeLine = codeLine;
this.codeColumn = codeColumn;
this.stack = stack;
this.logLevel = logLevel;
}

public String getMessage() {
return message;
}

public String getUrl() {
return url;
}

public Integer getCodeLine() {
return codeLine;
}

public Integer getCodeColumn() {
return codeColumn;
}

public String getStack() {
return stack;
}

public ClientLogLevel getLogLevel() {
return logLevel;
}

@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.STYLE)
.append("message", message)
.append("url", url)
.append("codeLine", codeLine)
.append("codeColumn", codeColumn)
.append("stack", stack)
.append("logLevel", logLevel)
.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package at.wrk.coceso.contract.client;

import com.fasterxml.jackson.annotation.JsonProperty;

public enum ClientLogLevel {
@JsonProperty("error")
ERROR,

@JsonProperty("warning")
WARNING,

@JsonProperty("info")
INFO,

@JsonProperty("debug")
DEBUG,
}

This file was deleted.

1 change: 1 addition & 0 deletions main/resources/ReleaseNotes/2.5.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
* FMD-70 update copyright of basemap.at
* FMD-19 show age of patient if birthday is available
* Fix security issues by upgrading to latest dependencies
* FMD-98 improve client log
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package at.wrk.coceso.controller.data;

import at.wrk.coceso.contract.client.ClientLog;
import at.wrk.coceso.controller.handler.ClientLogger;
import at.wrk.coceso.entity.Concern;
import at.wrk.coceso.entity.User;
import at.wrk.coceso.entity.enums.Errors;
import at.wrk.coceso.entity.helper.ClientLog;
import at.wrk.coceso.entity.helper.RestProperty;
import at.wrk.coceso.entity.helper.RestResponse;
import at.wrk.coceso.service.ConcernService;
Expand All @@ -14,74 +15,84 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.Collection;

@RestController
@RequestMapping("/data/")
public class DataController {

@Autowired
private TaskWriteService taskWriteService;
private final TaskWriteService taskWriteService;
private final ConcernService concernService;
private final PointService pointService;
private final UserService userService;
private final ClientLogger clientLogger;

@Autowired
private ConcernService concernService;

@Autowired
private PointService pointService;
@Autowired
public DataController(
final TaskWriteService taskWriteService,
final ConcernService concernService,
final PointService pointService,
final UserService userService, final ClientLogger clientLogger) {
this.taskWriteService = taskWriteService;
this.concernService = concernService;
this.pointService = pointService;
this.userService = userService;
this.clientLogger = clientLogger;
}

@Autowired
private UserService userService;
@PreAuthorize("@auth.hasAccessLevel('Main')")
@RequestMapping(value = "assignUnit", produces = "application/json", method = RequestMethod.POST)
public RestResponse assignUnit(
@RequestParam("incident_id") final int incidentId,
@RequestParam("unit_id") final int unitId,
@AuthenticationPrincipal final User user) {
taskWriteService.assignUnit(incidentId, unitId, user);
return new RestResponse(true);
}

@PreAuthorize("@auth.hasAccessLevel('Main')")
@RequestMapping(value = "assignUnit", produces = "application/json", method = RequestMethod.POST)
public RestResponse assignUnit(
@RequestParam("incident_id") final int incidentId,
@RequestParam("unit_id") final int unitId,
@AuthenticationPrincipal final User user) {
taskWriteService.assignUnit(incidentId, unitId, user);
return new RestResponse(true);
}
@PreAuthorize("permitAll")
@RequestMapping(value = "timestamp", produces = "application/json", method = RequestMethod.GET)
public RestResponse timestamp() {
return new RestResponse(true, new RestProperty("time", System.currentTimeMillis()));
}

@PreAuthorize("permitAll")
@RequestMapping(value = "timestamp", produces = "application/json", method = RequestMethod.GET)
public RestResponse timestamp() {
return new RestResponse(true, new RestProperty("time", System.currentTimeMillis()));
}
@PreAuthorize("isAuthenticated()")
@RequestMapping(value = "clientLogger", produces = "application/json", method = RequestMethod.POST)
public RestResponse clientLogger(
@RequestBody final ClientLog clientLog,
@AuthenticationPrincipal final User user,
final HttpServletRequest request) {
clientLogger.handleClientLog(clientLog, user, request.getRemoteHost());
return new RestResponse(true);
}

@PreAuthorize("isAuthenticated()")
@RequestMapping(value = "jslog", produces = "application/json", method = RequestMethod.POST)
public RestResponse jslog(@RequestBody ClientLog jslog, BindingResult result, @AuthenticationPrincipal User user) {
jslog.log(user);
return new RestResponse(true);
}
@PreAuthorize("isAuthenticated()")
@RequestMapping(value = "setActiveConcern", produces = "application/json", method = RequestMethod.POST)
public RestResponse setActiveConcern(@RequestParam("concern_id") Integer concern_id, @AuthenticationPrincipal User user) {
Concern concern;

@PreAuthorize("isAuthenticated()")
@RequestMapping(value = "setActiveConcern", produces = "application/json", method = RequestMethod.POST)
public RestResponse setActiveConcern(@RequestParam("concern_id") Integer concern_id, @AuthenticationPrincipal User user) {
Concern concern;
if (concern_id == null) {
concern = null;
} else {
concern = concernService.getById(concern_id);
if (concern == null || concern.isClosed()) {
return new RestResponse(Errors.ConcernMissingOrClosed);
}
}

if (concern_id == null) {
concern = null;
} else {
concern = concernService.getById(concern_id);
if (concern == null || concern.isClosed()) {
return new RestResponse(Errors.ConcernMissingOrClosed);
}
return new RestResponse(userService.setActiveConcern(user, concern));
}

return new RestResponse(userService.setActiveConcern(user, concern));
}

@PreAuthorize("@auth.hasAccessLevel('Main')")
@RequestMapping(value = "poiAutocomplete", produces = "application/json", method = RequestMethod.GET)
public Collection<String> poiAutocomplete(@RequestParam("q") String q, @ActiveConcern Concern concern) {
return pointService.autocomplete(q, concern);
}
@PreAuthorize("@auth.hasAccessLevel('Main')")
@RequestMapping(value = "poiAutocomplete", produces = "application/json", method = RequestMethod.GET)
public Collection<String> poiAutocomplete(@RequestParam("q") String q, @ActiveConcern Concern concern) {
return pointService.autocomplete(q, concern);
}
}
Loading

0 comments on commit 4bebe5c

Please sign in to comment.