From e643c6c71a2cc9481a5acf4b9f68d315454b2265 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Fri, 5 Jul 2024 20:24:02 +0200 Subject: [PATCH] json fieldvalue --- .../calender/api/KalenderRestController.java | 9 +- .../calender/api/RequestInterceptor.java | 95 +++++++++++-------- .../com/nttdata/calender/changes/Change.java | 3 +- .../nttdata/calender/states/StateChange.java | 18 +++- 4 files changed, 80 insertions(+), 45 deletions(-) diff --git a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java index 9b15d1f..b9e52c8 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -309,10 +309,13 @@ public class KalenderRestController { logRequest("/updateState", request.toString()); httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); - - var response = stateChange.createStateChange(request); + + String response = stateChange.createStateChange(request); + httpRequest.setAttribute("listOfFieldValues", stateChange.getListOfFieldValues()); + return ResponseEntity.ok(response); } + /** * Updates an implementer based on the data sent in the request. @@ -429,7 +432,7 @@ public class KalenderRestController { presets.deletePreset(request); return presets.getAll(); } - + @CrossOrigin @PostMapping("api/renamePreset") @ResponseBody 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 4fef020..c392e4c 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.startsWith; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.List; @Component public class RequestInterceptor implements HandlerInterceptor { @@ -47,66 +48,82 @@ public class RequestInterceptor implements HandlerInterceptor { } @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(); + Query entry = null; + + Object requestBody = request.getAttribute("requestBody"); + String formName = (String) request.getAttribute("formName"); + String entryId = (String) request.getAttribute("entryId"); + int status = (ex == null) ? 3 : 2; + + // 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"); } + // Remove the last comma and space + if (fieldValueString.length() > 1) { + fieldValueString.setLength(fieldValueString.length() - 2); + } + fieldValueString.append("\n}"); - long transactionId = System.currentTimeMillis(); - Query entry = null; - - Object requestBody = request.getAttribute("requestBody"); - String formName = (String) request.getAttribute("formName"); - int status = (ex == null) ? 3 : 2; + String fieldValueJson = fieldValueString.toString(); if (requestBody instanceof ChangeUpdateRequest) { - entry = buildQueryEntry(transactionId, "Date change", formName, ((ChangeUpdateRequest) requestBody).getChangeNr(), getAssignedTo(), status); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, "?", fieldValueJson); } if (entry != null) { api.createEntry(entry); } } +} - private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, - String assignedTo, int status) { - 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( - "Die Felder und Werte die verändert wurde, z.B.: {\"6000434\" : \"24.05.2024 13:00:45\"}")) - .addFieldValue("FormIDs", 666000002, - new Value("Die Request IDs (1er Feld / entryid) der Einträge, die modifiziert werden")) - .addFieldValue("ActionType", 666000003, new Value(actionType)) - .addFieldValue("AffectedForm", 666000004, new Value(affectedForm)) - .addFieldValue("TicketID", 666000005, new Value(changeNr)) - .build(); - } +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; +} - 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/changes/Change.java b/backend/src/main/java/com/nttdata/calender/changes/Change.java index 0083184..66947c8 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -161,7 +161,6 @@ public class Change { } change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); - change.setResourceName(getValueStringByID(entry, "ResourceName")); change.setD1(timestampToDateById(entry, "D1")); change.setD2(timestampToDateById(entry, "D2")); @@ -204,7 +203,7 @@ public class Change { * @return the full name of the impersonated user * @throws ARException if an AR exception occurs * @throws NotFoundError if no user or support groups are found with the - * provided login ID + * provi1ded login ID */ private String processPeopleInfo(ChangeRequest request) throws ARException, NotFoundError { // Queries for SupportGroup of impersonated User 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 31a0634..8f70847 100644 --- a/backend/src/main/java/com/nttdata/calender/states/StateChange.java +++ b/backend/src/main/java/com/nttdata/calender/states/StateChange.java @@ -1,5 +1,8 @@ package com.nttdata.calender.states; +import java.util.ArrayList; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,6 +20,7 @@ import com.nttdata.calender.api.RemedyJavaAPI; public class StateChange { static final String formName = "ASF:CHG_CAL_Interactions"; private RemedyJavaAPI remedyJavaAPI; + ArrayList listOfFieldValues; /** * Initializes the StateChange class with a RemedyJavaAPI instance. @@ -26,6 +30,7 @@ public class StateChange { @Autowired public StateChange(RemedyJavaAPI remedyJavaAPI) { this.remedyJavaAPI = remedyJavaAPI; + listOfFieldValues = new ArrayList<>(); } /** @@ -39,6 +44,7 @@ public class StateChange { * @throws ARException when there's an error creating the entry */ public String createStateChange(StateChangeRequest request) throws ARException { + listOfFieldValues.clear(); String ACTION = "STATUSCHANGE"; @@ -46,12 +52,22 @@ public class StateChange { ACTION = "RESTART"; var query = new Query.QueryBuilder(formName) + .addFieldValue("Action", 666000001, new Value(ACTION)) .addFieldValue("ChangeNr", 666000002, new Value(request.getChangeNr())) .addFieldValue("CurrentState", 666000003, new Value(request.getCurrentState())) .addFieldValue("NextState", 666000004, new Value(request.getNextState())) - .addFieldValue("Action", 666000001, new Value(ACTION)) .build(); + // Print out the field IDs and values + for (var entry : query.getFieldValues()) { + listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + } + return remedyJavaAPI.createEntry(query); } + + public List getListOfFieldValues() { + return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability + } + }