From d3ece6f4e92b395b01497e0e121c64d38136ea7c Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Mon, 8 Jul 2024 16:30:38 +0200 Subject: [PATCH] added " --- .../calender/api/RequestInterceptor.java | 161 ++++++++++-------- .../nttdata/calender/approval/Approval.java | 2 +- .../com/nttdata/calender/changes/Change.java | 2 +- .../calender/implementer/Implementer.java | 2 +- .../com/nttdata/calender/presets/Presets.java | 2 +- .../nttdata/calender/states/StateChange.java | 2 +- 6 files changed, 93 insertions(+), 78 deletions(-) diff --git a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java index c392e4c..cef177e 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -21,8 +21,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bmc.arsys.api.Value; -import static org.mockito.ArgumentMatchers.startsWith; - import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @@ -30,100 +28,117 @@ import java.util.List; @Component public class RequestInterceptor implements HandlerInterceptor { private RemedyJavaAPI api; - private final static String form = "ASF:CHG_CAL_Transactions"; - + private static final String FORM_NAME = "ASF:CHG_CAL_Transactions"; private static final Logger logger = LogManager.getLogger("application"); private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { api = new RemedyJavaAPI(); String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); - String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, - request.getRequestURI()); + String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, request.getRequestURI()); logger.info(out); return true; } @Override -public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception { + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) { + return; + } - if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) { - return; + long transactionId = System.currentTimeMillis(); + Object requestBody = request.getAttribute("requestBody"); + String formName = getValidatedField((String) request.getAttribute("formName"), "Default Form"); + int status = (ex == null) ? 3 : 2; + + List listOfFieldValues = getFieldValues(request); + String fieldValueJson = convertFieldValuesToJson(listOfFieldValues); + + Query entry = null; + + if (requestBody != null) { + if (requestBody instanceof ChangeUpdateRequest) { + ChangeUpdateRequest body = (ChangeUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Date change", formName, body.getChangeNr(), getAssignedTo(), status, body.getResourceId(), fieldValueJson); + } else if (requestBody instanceof StateChangeRequest) { + StateChangeRequest body = (StateChangeRequest) requestBody; + entry = buildQueryEntry(transactionId, "State transition", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof ImplementerUpdateRequest) { + ImplementerUpdateRequest body = (ImplementerUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Implementer Update", formName, body.getPkgId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof ApprovalUpdateRequest) { + ApprovalUpdateRequest body = (ApprovalUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Approval Update", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof Preset) { + Preset body = (Preset) requestBody; + entry = buildQueryEntry(transactionId, "Save Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof SelectPresetRequest) { + SelectPresetRequest body = (SelectPresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Select Preset", formName, body.getGuid(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof UpdatePresetRequest) { + UpdatePresetRequest body = (UpdatePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Update Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof DeletePresetRequest) { + DeletePresetRequest body = (DeletePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Delete Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof RenamePresetRequest) { + RenamePresetRequest body = (RenamePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Rename Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof EditUserPreferencesRequest) { + entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, "?", fieldValueJson); + } + + if (entry != null) { + api.createEntry(entry); + } + } + + if (ex != null) { + logger.error("Exception occurred during afterCompletion: ", ex); + } } - long transactionId = System.currentTimeMillis(); - Query entry = null; + private List getFieldValues(HttpServletRequest request) { + return (List) request.getAttribute("listOfFieldValues"); + } - Object requestBody = request.getAttribute("requestBody"); - String formName = (String) request.getAttribute("formName"); - String entryId = (String) request.getAttribute("entryId"); - int status = (ex == null) ? 3 : 2; + private String convertFieldValuesToJson(List fieldValues) { + if (fieldValues == null) { + return "‎"; + } - // Retrieve the list of field values from the request attribute - List listOfFieldValues = (List) request.getAttribute("listOfFieldValues"); - - if (listOfFieldValues != null) { - StringBuilder fieldValueString = new StringBuilder("{\n"); - for (String field : listOfFieldValues) { - fieldValueString.append("\t\"").append(field).append("\", \n"); + StringBuilder fieldValueString = new StringBuilder(); + for (String field : fieldValues) { + fieldValueString.append("\"").append(field).append("\", \n"); } // Remove the last comma and space - if (fieldValueString.length() > 1) { + if (fieldValueString.length() >= 1) { fieldValueString.setLength(fieldValueString.length() - 2); } - fieldValueString.append("\n}"); - String fieldValueJson = fieldValueString.toString(); + return fieldValueString.toString(); + } - if (requestBody instanceof ChangeUpdateRequest) { - entry = buildQueryEntry(transactionId, "Date change", formName, ((ChangeUpdateRequest) requestBody).getChangeNr(), getAssignedTo(), status, ((ChangeUpdateRequest) requestBody).getResourceId(), fieldValueJson); - } else if (requestBody instanceof StateChangeRequest) { - entry = buildQueryEntry(transactionId, "State transition", formName, ((StateChangeRequest) requestBody).getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof ImplementerUpdateRequest) { - entry = buildQueryEntry(transactionId, "Implementer Update", formName, ((ImplementerUpdateRequest) requestBody).getPkgId(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof ApprovalUpdateRequest) { - entry = buildQueryEntry(transactionId, "Approval Update", formName, ((ApprovalUpdateRequest) requestBody).getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof Preset) { - entry = buildQueryEntry(transactionId, "Save Preset", formName, ((Preset) requestBody).getId(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof SelectPresetRequest) { - entry = buildQueryEntry(transactionId, "Select Preset", formName, ((SelectPresetRequest) requestBody).getGuid(), getAssignedTo(), status,"?", fieldValueJson); - } else if (requestBody instanceof UpdatePresetRequest) { - entry = buildQueryEntry(transactionId, "Update Preset", formName, ((UpdatePresetRequest) requestBody).getId(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof DeletePresetRequest) { - entry = buildQueryEntry(transactionId, "Delete Preset", formName, ((DeletePresetRequest) requestBody).getId(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof RenamePresetRequest) { - entry = buildQueryEntry(transactionId, "Rename Preset", formName, ((RenamePresetRequest) requestBody).getId(), getAssignedTo(), status, "?", fieldValueJson); - } else if (requestBody instanceof EditUserPreferencesRequest) { - entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, "?", fieldValueJson); - } + private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, String assignedTo, int status, String requestId, String fieldValueJson) { + return new Query.QueryBuilder(FORM_NAME) + .addFieldValue("AssignedTo", 4, new Value(getValidatedField(assignedTo, "‎"))) + .addFieldValue("Status", 7, new Value(status)) + .addFieldValue("TransactionID", 666000000, new Value(transactionId)) + .addFieldValue("FieldValue", 666000001, new Value(getValidatedField(fieldValueJson, "‎"))) + .addFieldValue("FormIDs", 666000002, new Value(getValidatedField(requestId, "‎"))) + .addFieldValue("ActionType", 666000003, new Value(getValidatedField(actionType, "‎"))) + .addFieldValue("AffectedForm", 666000004, new Value(getValidatedField(affectedForm, "‎"))) + .addFieldValue("TicketID", 666000005, new Value(getValidatedField(changeNr, "‎"))) + .build(); + } - if (entry != null) { - api.createEntry(entry); - } + private String getAssignedTo() { + return getValidatedField(api.getUser(), "‎"); + } + + private String getValidatedField(String field, String defaultValue) { + return (field == null || field.isEmpty()) ? defaultValue : field; } } - -private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, String assignedTo, int status, String requestId, String fieldValueJson) { - return new Query.QueryBuilder(form) - .addFieldValue("AssignedTo", 4, new Value(assignedTo)) - .addFieldValue("Status", 7, new Value(status)) - .addFieldValue("TransactionID", 666000000, new Value(transactionId)) - .addFieldValue("FieldValue", 666000001, new Value(fieldValueJson)) - .addFieldValue("FormIDs", 666000002, new Value(requestId)) - .addFieldValue("ActionType", 666000003, new Value(actionType)) - .addFieldValue("AffectedForm", 666000004, new Value(affectedForm)) - .addFieldValue("TicketID", 666000005, new Value(changeNr)) - .build(); -} - -private String getAssignedTo() { - String assignedTo = api.getUser(); - return (assignedTo == null || assignedTo.isEmpty()) ? "Placeholder User" : assignedTo; -} - - -} diff --git a/backend/src/main/java/com/nttdata/calender/approval/Approval.java b/backend/src/main/java/com/nttdata/calender/approval/Approval.java index 71cb158..f843d82 100644 --- a/backend/src/main/java/com/nttdata/calender/approval/Approval.java +++ b/backend/src/main/java/com/nttdata/calender/approval/Approval.java @@ -66,7 +66,7 @@ public class Approval { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } diff --git a/backend/src/main/java/com/nttdata/calender/changes/Change.java b/backend/src/main/java/com/nttdata/calender/changes/Change.java index f0a0dfb..7d7fa47 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -348,7 +348,7 @@ public class Change { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } } \ No newline at end of file diff --git a/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java b/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java index a247b75..93a4ef8 100644 --- a/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java +++ b/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java @@ -68,7 +68,7 @@ public class Implementer { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } diff --git a/backend/src/main/java/com/nttdata/calender/presets/Presets.java b/backend/src/main/java/com/nttdata/calender/presets/Presets.java index 675463b..026abec 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -237,7 +237,7 @@ public class Presets { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } diff --git a/backend/src/main/java/com/nttdata/calender/states/StateChange.java b/backend/src/main/java/com/nttdata/calender/states/StateChange.java index 8f70847..cb6261f 100644 --- a/backend/src/main/java/com/nttdata/calender/states/StateChange.java +++ b/backend/src/main/java/com/nttdata/calender/states/StateChange.java @@ -60,7 +60,7 @@ public class StateChange { // Print out the field IDs and values for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } return remedyJavaAPI.createEntry(query);