package tools; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.ccalm.weather.models.ErrorResponseModel; import org.json.JSONException; import org.json.JSONObject; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; import java.util.List; @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) public class CustomException extends Exception { private static final Logger logger = LogManager.getLogger(CustomException.class); private ErrorResponseModel error; public CustomException(int errorCode, String errorMessage, String marker) { super(errorMessage); error = new ErrorResponseModel(errorCode, errorMessage, marker); } public CustomException(int errorCode, String errorMessage, String errorSetting, String marker) { super(errorMessage); error = new ErrorResponseModel(errorCode, errorMessage, errorSetting, marker); } public CustomException(int errorCode, List errorMessages, String marker) { super(String.join(" ", errorMessages)); error = new ErrorResponseModel(errorCode, errorMessages, marker); } public CustomException(int errorCode, List errorMessages, List errorSettings, String marker) { super(String.join(" ", errorMessages)); error = new ErrorResponseModel(errorCode, errorMessages, errorSettings, marker); } public int getErrorCode() { return error.getError_code(); } public String getErrorMarker() { return error.getError_marker(); } public List getErrorMessages() { return error.getError_message(); } public List getErrorSettings() { return error.getError_setting(); } public JSONObject getJson() { JSONObject json = new JSONObject(); try { json.put("error_code", this.getErrorCode()); json.put("error_message", this.getErrorMessages()); json.put("error_setting", this.getErrorSettings()); json.put("error_marker", this.getErrorMarker()); } catch (JSONException e) { logger.error("Error", e); } return json; } public ErrorResponseModel getErrorResponseModel() { return error; } }