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());
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

View File

@ -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<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();
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;
}
}

View File

@ -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

View File

@ -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<String> 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<String> getListOfFieldValues() {
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
}
}