json fieldvalue

main
Said Gedik 2024-07-05 20:24:02 +02:00
parent d0a4d8a0a6
commit e643c6c71a
4 changed files with 80 additions and 45 deletions

View File

@ -309,10 +309,13 @@ public class KalenderRestController {
logRequest("/updateState", request.toString()); logRequest("/updateState", request.toString());
httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("requestBody", request);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); 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); return ResponseEntity.ok(response);
} }
/** /**
* Updates an implementer based on the data sent in the request. * Updates an implementer based on the data sent in the request.
@ -429,7 +432,7 @@ public class KalenderRestController {
presets.deletePreset(request); presets.deletePreset(request);
return presets.getAll(); return presets.getAll();
} }
@CrossOrigin @CrossOrigin
@PostMapping("api/renamePreset") @PostMapping("api/renamePreset")
@ResponseBody @ResponseBody

View File

@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.startsWith;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List;
@Component @Component
public class RequestInterceptor implements HandlerInterceptor { public class RequestInterceptor implements HandlerInterceptor {
@ -47,66 +48,82 @@ public class RequestInterceptor implements HandlerInterceptor {
} }
@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception { throws Exception {
if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) { if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) {
return; 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<String> listOfFieldValues = (List<String>) 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(); String fieldValueJson = fieldValueString.toString();
Query entry = null;
Object requestBody = request.getAttribute("requestBody");
String formName = (String) request.getAttribute("formName");
int status = (ex == null) ? 3 : 2;
if (requestBody instanceof ChangeUpdateRequest) { 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) { } 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) { } 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) { } 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) { } 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) { } 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) { } 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) { } 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) { } 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) { } 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) { if (entry != null) {
api.createEntry(entry); api.createEntry(entry);
} }
} }
}
private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, String assignedTo, int status, String requestId, String fieldValueJson) {
String assignedTo, int status) { return new Query.QueryBuilder(form)
return new Query.QueryBuilder(form) .addFieldValue("AssignedTo", 4, new Value(assignedTo))
.addFieldValue("AssignedTo", 4, new Value(assignedTo)) .addFieldValue("Status", 7, new Value(status))
.addFieldValue("Status", 7, new Value(status)) .addFieldValue("TransactionID", 666000000, new Value(transactionId))
.addFieldValue("TransactionID", 666000000, new Value(transactionId)) .addFieldValue("FieldValue", 666000001, new Value(fieldValueJson))
.addFieldValue("FieldValue", 666000001, new Value( .addFieldValue("FormIDs", 666000002, new Value(requestId))
"Die Felder und Werte die verändert wurde, z.B.: {\"6000434\" : \"24.05.2024 13:00:45\"}")) .addFieldValue("ActionType", 666000003, new Value(actionType))
.addFieldValue("FormIDs", 666000002, .addFieldValue("AffectedForm", 666000004, new Value(affectedForm))
new Value("Die Request IDs (1er Feld / entryid) der Einträge, die modifiziert werden")) .addFieldValue("TicketID", 666000005, new Value(changeNr))
.addFieldValue("ActionType", 666000003, new Value(actionType)) .build();
.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;
}
} }

View File

@ -161,7 +161,6 @@ public class Change {
} }
change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId"));
change.setResourceName(getValueStringByID(entry, "ResourceName")); change.setResourceName(getValueStringByID(entry, "ResourceName"));
change.setD1(timestampToDateById(entry, "D1")); change.setD1(timestampToDateById(entry, "D1"));
change.setD2(timestampToDateById(entry, "D2")); change.setD2(timestampToDateById(entry, "D2"));
@ -204,7 +203,7 @@ public class Change {
* @return the full name of the impersonated user * @return the full name of the impersonated user
* @throws ARException if an AR exception occurs * @throws ARException if an AR exception occurs
* @throws NotFoundError if no user or support groups are found with the * @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 { private String processPeopleInfo(ChangeRequest request) throws ARException, NotFoundError {
// Queries for SupportGroup of impersonated User // Queries for SupportGroup of impersonated User

View File

@ -1,5 +1,8 @@
package com.nttdata.calender.states; package com.nttdata.calender.states;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,6 +20,7 @@ import com.nttdata.calender.api.RemedyJavaAPI;
public class StateChange { public class StateChange {
static final String formName = "ASF:CHG_CAL_Interactions"; static final String formName = "ASF:CHG_CAL_Interactions";
private RemedyJavaAPI remedyJavaAPI; private RemedyJavaAPI remedyJavaAPI;
ArrayList<String> listOfFieldValues;
/** /**
* Initializes the StateChange class with a RemedyJavaAPI instance. * Initializes the StateChange class with a RemedyJavaAPI instance.
@ -26,6 +30,7 @@ public class StateChange {
@Autowired @Autowired
public StateChange(RemedyJavaAPI remedyJavaAPI) { public StateChange(RemedyJavaAPI remedyJavaAPI) {
this.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 * @throws ARException when there's an error creating the entry
*/ */
public String createStateChange(StateChangeRequest request) throws ARException { public String createStateChange(StateChangeRequest request) throws ARException {
listOfFieldValues.clear();
String ACTION = "STATUSCHANGE"; String ACTION = "STATUSCHANGE";
@ -46,12 +52,22 @@ public class StateChange {
ACTION = "RESTART"; ACTION = "RESTART";
var query = new Query.QueryBuilder(formName) var query = new Query.QueryBuilder(formName)
.addFieldValue("Action", 666000001, new Value(ACTION))
.addFieldValue("ChangeNr", 666000002, new Value(request.getChangeNr())) .addFieldValue("ChangeNr", 666000002, new Value(request.getChangeNr()))
.addFieldValue("CurrentState", 666000003, new Value(request.getCurrentState())) .addFieldValue("CurrentState", 666000003, new Value(request.getCurrentState()))
.addFieldValue("NextState", 666000004, new Value(request.getNextState())) .addFieldValue("NextState", 666000004, new Value(request.getNextState()))
.addFieldValue("Action", 666000001, new Value(ACTION))
.build(); .build();
// Print out the field IDs and values
for (var entry : query.getFieldValues()) {
listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue());
}
return remedyJavaAPI.createEntry(query); return remedyJavaAPI.createEntry(query);
} }
public List<String> getListOfFieldValues() {
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
}
} }