From b6d01f27ec298b059fefb9346e409ad5ad650d88 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Fri, 5 Jul 2024 20:50:44 +0200 Subject: [PATCH] added fieldvalues for all preset post handlers --- .../calender/api/KalenderRestController.java | 34 +++++--- .../nttdata/calender/approval/Approval.java | 63 ++++++-------- .../calender/implementer/Implementer.java | 26 ++++++ .../com/nttdata/calender/presets/Presets.java | 86 +++++++++++++------ 4 files changed, 136 insertions(+), 73 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 acdc3aa..ca710dd 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -283,16 +283,15 @@ public class KalenderRestController { public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request, HttpServletRequest httpRequest) throws ARException, ValidationError { httpRequest.setAttribute("requestBody", request); - + String formName = (request.getState() == 0) ? "ASF:WI_TAS_Paket" : "CHG:Infrastructure Change"; httpRequest.setAttribute("formName", formName); - + change.modifyTimestamp(request); httpRequest.setAttribute("listOfFieldValues", change.getListOfFieldValues()); - + return request; } - /** * Updates the state based on the provided {@link StateChangeRequest} object. @@ -312,13 +311,12 @@ public class KalenderRestController { logRequest("/updateState", request.toString()); httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); - + 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. @@ -337,6 +335,8 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); var response = implementer.update(request); + httpRequest.setAttribute("listOfFieldValues", implementer.getListOfFieldValues()); + return ResponseEntity.ok(response); } @@ -358,6 +358,8 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); var response = approval.update(request); + httpRequest.setAttribute("listOfFieldValues", approval.getListOfFieldValues()); + return ResponseEntity.ok(response); } @@ -386,6 +388,8 @@ public class KalenderRestController { Presets presets = new Presets(javaAPI); presets.savePreset(request); + httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + return presets.getAll(); } @@ -393,13 +397,15 @@ public class KalenderRestController { @PostMapping("/api/selectPreset") @ResponseBody public boolean selectPreset(@RequestBody SelectPresetRequest guid, HttpServletRequest httpRequest) - throws ARException, - NotFoundError { + throws ARException, NotFoundError { httpRequest.setAttribute("requestBody", guid); httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences"); Presets presets = new Presets(javaAPI); - return presets.selectPreset(guid); + boolean result = presets.selectPreset(guid); + httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + + return result; } @CrossOrigin("*") @@ -420,6 +426,8 @@ public class KalenderRestController { Presets presets = new Presets(javaAPI); presets.updatePreset(request); + httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + return presets.getAll(); } @@ -433,9 +441,11 @@ public class KalenderRestController { Presets presets = new Presets(javaAPI); presets.deletePreset(request); + httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + return presets.getAll(); } - + @CrossOrigin @PostMapping("api/renamePreset") @ResponseBody @@ -446,6 +456,8 @@ public class KalenderRestController { Presets presets = new Presets(javaAPI); presets.renamePreset(request); + httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + return presets.getAll(); } 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 aba4e23..71cb158 100644 --- a/backend/src/main/java/com/nttdata/calender/approval/Approval.java +++ b/backend/src/main/java/com/nttdata/calender/approval/Approval.java @@ -1,5 +1,8 @@ package com.nttdata.calender.approval; +import java.util.ArrayList; +import java.util.List; + import org.springframework.stereotype.Service; import com.bmc.arsys.api.ARException; @@ -13,6 +16,8 @@ import com.nttdata.calender.api.RemedyJavaAPI; @Service public class Approval { private RemedyJavaAPI remedyJavaAPI; + private ArrayList listOfFieldValues; + /** * Constructor for the Approval class. @@ -21,6 +26,17 @@ public class Approval { */ public Approval(RemedyJavaAPI remedyJavaAPI) { this.remedyJavaAPI = remedyJavaAPI; + this.listOfFieldValues = new ArrayList<>(); + + } + + /** + * Returns the list of field values. + * + * @return listOfFieldValues + */ + public List getListOfFieldValues() { + return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability } /** @@ -31,6 +47,9 @@ public class Approval { * @throws ARException If an error occurs during the update */ public String update(ApprovalUpdateRequest request) throws ARException { + // Clear the list before processing a new request + listOfFieldValues.clear(); + remedyJavaAPI.impersonateUser("WuiQualityKV"); String action = "APPROVAL"; @@ -40,46 +59,18 @@ public class Approval { .addFieldValue("ApprovalAction", 1000003264, request.getApprovalActionValue()) .build(); - /* - * String user = remedyJavaAPI.getUser(); - * var queryChanges = new Query.QueryBuilder("ASF:WI_TAS_Paket") - * .addFieldId("ChangeNr", 1000000182) - * .addFieldId("ActualStatus", 7) - * .build(); - * - * - * Entry change = remedyJavaAPI - * .queryFieldsById("\'Infrastructure Change ID\' = \"" + - * request.getChangeNrValue().toString() + "\"", - * queryChanges.getFieldIds(), queryChanges.getFormName(), null, 0, 0) - * .get(0); - * - * - * int approvalAction = - * queryUpdate.getFieldValue("ApprovalAction").getIntValue(); - * var actualStatus = change.get(queryChanges.getFieldId("ActualStatus")); - * - * - * if (approvalAction == 1 || approvalAction == 2) { - * if (inApprovalList(user, request.getChangeNr())) - * return this.remedyJavaAPI.createEntry(queryUpdate); - * else - * return "user (" + user + ") has no authorization for approval."; - * } else if (approvalAction == 3) { - * if (request.getChangeNr().contains("PKG") && actualStatus.getIntValue() == 1) - * return this.remedyJavaAPI.createEntry(queryUpdate); - * else - * return request.getChangeNr().contains("PKG") - * ? "actual status not set to 'request for authorization'." - * : "is not a package (PKG)"; - * } else { - * return "invalid approval status (must be 1, 2 or 3)"; - * } - */ + collectFieldValues(queryUpdate); // Collect field values return this.remedyJavaAPI.createEntry(queryUpdate); } + private void collectFieldValues(Query query) { + for (var entry : query.getFieldValues()) { + listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + } + } + + /** * Checks if a user is in the approval list for a specific change. * 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 d662657..a247b75 100644 --- a/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java +++ b/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java @@ -1,5 +1,8 @@ package com.nttdata.calender.implementer; +import java.util.ArrayList; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +21,7 @@ import com.nttdata.calender.api.RemedyJavaAPI; public class Implementer { private RemedyJavaAPI remedyJavaAPI; private static final String formName = "ASF:WI_TAS_Paket"; + private ArrayList listOfFieldValues; /** * Initialization of the Implementer class with autowiring of RemedyJavaAPI. @@ -27,6 +31,16 @@ public class Implementer { @Autowired public Implementer(RemedyJavaAPI remedyJavaAPI) { this.remedyJavaAPI = remedyJavaAPI; + this.listOfFieldValues = new ArrayList<>(); + } + + /** + * Returns the list of field values. + * + * @return listOfFieldValues + */ + public List getListOfFieldValues() { + return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability } /** @@ -37,15 +51,27 @@ public class Implementer { * @throws ARException if an ARException occurs */ public String update(ImplementerUpdateRequest request) throws ARException { + // Clear the list before processing a new request + listOfFieldValues.clear(); + var action = "SETCHGIMPLEMENTER"; var queryUpdate = new Query.QueryBuilder("ASF:CHG_CAL_Interactions") .addFieldValue("ChangeNr", 666000002, request.getPkgIdValue()) .addFieldValue("Action", 666000001, new Value(action)) .addFieldValue("LoginId", 666000005, request.getLoginIdValue()) .build(); + + collectFieldValues(queryUpdate); // Collect field values + return this.remedyJavaAPI.createEntry(queryUpdate); } + private void collectFieldValues(Query query) { + for (var entry : query.getFieldValues()) { + listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + } + } + /** * Retrieves all the implementers that are part of the support group of a * specific change. 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 3711cca..675463b 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -21,6 +21,7 @@ public class Presets { private Query prefQuery; private RemedyJavaAPI api; private List presets; + private ArrayList listOfFieldValues; @Autowired public Presets(RemedyJavaAPI api) throws ARException, NotFoundError { @@ -55,9 +56,20 @@ public class Presets { .build(); this.presets = new ArrayList<>(); + this.listOfFieldValues = new ArrayList<>(); + api.impersonateUser("WuiQualityKV"); } + /** + * Returns the list of field values. + * + * @return listOfFieldValues + */ + public List getListOfFieldValues() { + return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability + } + public Object initPresets() throws ARException, NotFoundError { PresetsGetResponse response = new PresetsGetResponse(); @@ -91,7 +103,7 @@ public class Presets { formUserPref, null, 0, 0); // INIT ALL PRESETS - + getAll(); response.setPresets(this.presets); response.setSelectedPreset(preference.get(0).get(prefQuery.getFieldId("GUID")).toString()); @@ -105,64 +117,79 @@ public class Presets { public void createUserPreference(String guid) throws ARException { var savePreference = new Query.QueryBuilder(formUserPref) - .addFieldValue("GUID", 364000001, new Value(guid)) - .addFieldValue("Details", 364000002, new Value(1)) - .addFieldValue("View", 364000003, new Value(1)) - .addFieldValue("Language", 364000004, new Value("DE")) - .build(); - + .addFieldValue("GUID", 364000001, new Value(guid)) + .addFieldValue("Details", 364000002, new Value(1)) + .addFieldValue("View", 364000003, new Value(1)) + .addFieldValue("Language", 364000004, new Value("DE")) + .build(); + api.createEntry(savePreference); - } + } public void savePreset(Preset request) throws ARException, NotFoundError { + listOfFieldValues.clear(); var saveQuery = new Query.QueryBuilder(formDefault) - .addFieldValue("FilterPresetName", 364000001, new Value(request.getName())) - .addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition())) - .build(); - + .addFieldValue("FilterPresetName", 364000001, new Value(request.getName())) + .addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition())) + .build(); + + collectFieldValues(saveQuery); // Collect field values api.createEntry(saveQuery); - } + } public boolean selectPreset(SelectPresetRequest guid) throws ARException { + listOfFieldValues.clear(); var queryP = new Query.QueryBuilder(formUserPref) - .addFieldValue("GUID", 364000001, new Value(guid.getGuid())).build(); - + .addFieldValue("GUID", 364000001, new Value(guid.getGuid())).build(); + + collectFieldValues(queryP); // Collect field values + var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryP.getFieldIds(), formUserPref, - null, 0, - 0); - + null, 0, + 0); + if (pref.isEmpty() || pref == null) - return false; - + return false; + api.modifyEntry(pref.get(0).getEntryId(), queryP); return true; - } + } public void updatePreset(UpdatePresetRequest request) throws ARException { + listOfFieldValues.clear(); var queryPresets = new Query.QueryBuilder(formDefault) - .addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build(); + .addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build(); + + collectFieldValues(queryPresets); // Collect field values + var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", - queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); - + queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); + api.modifyEntry(preset.getEntryId(), queryPresets); - } + } public void renamePreset(RenamePresetRequest request) throws ARException { + listOfFieldValues.clear(); var queryPresets = new Query.QueryBuilder(formDefault) .addFieldValue("Name", 364000001, new Value(request.getNewName())).build(); var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); + collectFieldValues(queryPresets); api.modifyEntry(preset.getEntryId(), queryPresets); } public void editUserPreferences(EditUserPreferencesRequest request) throws ARException { + listOfFieldValues.clear(); var queryUserPreferences = new Query.QueryBuilder(formUserPref) .addFieldValue("Details", 364000002, new Value(request.getDetails())) .addFieldValue("View", 364000003, new Value(request.getView())) .addFieldValue("Language", 364000004, new Value(request.getLanguage())) .build(); + collectFieldValues(queryUserPreferences); + + var preferences = api .queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryUserPreferences.getFieldIds(), formUserPref, null, 0, 0) @@ -172,7 +199,8 @@ public class Presets { } public void allPresets() throws ARException, NotFoundError { - var entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\" OR \'364000004\'!=NULL OR \'364000003\'!=NULL", + var entries = api.queryFieldsById( + "\'2\'==\"" + api.getUser() + "\" OR \'364000004\'!=NULL OR \'364000003\'!=NULL", defQuery.getFieldIds(), formDefault, null, 0, @@ -207,6 +235,12 @@ public class Presets { selectPreset(spr); } + private void collectFieldValues(Query query) { + for (var entry : query.getFieldValues()) { + listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + } + } + public List getAll() throws NotFoundError, ARException { allPresets(); return this.presets;