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

@ -310,10 +310,13 @@ public class KalenderRestController {
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.
* Returns an error when the action is not possible or the request has an

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,7 +48,7 @@ public class RequestInterceptor implements HandlerInterceptor {
}
@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 {
if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) {
@ -59,54 +60,70 @@ public class RequestInterceptor implements HandlerInterceptor {
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}");
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) {
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(
"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("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() {
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
}
}