From 022024219e3103e0105813be22ce9dad3ee724ae Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Tue, 18 Jun 2024 18:24:47 +0200 Subject: [PATCH 01/15] Interceptor for Transaction Table --- .../com/nttdata/calender/WebMvcConfig.java | 14 +++++-- .../calender/api/KalenderRestController.java | 1 + .../calender/api/RequestInterceptor.java | 38 +++++++++++++++++++ .../com/nttdata/calender/changes/Change.java | 5 +-- 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java diff --git a/backend/src/main/java/com/nttdata/calender/WebMvcConfig.java b/backend/src/main/java/com/nttdata/calender/WebMvcConfig.java index ab87283..3fce4e6 100644 --- a/backend/src/main/java/com/nttdata/calender/WebMvcConfig.java +++ b/backend/src/main/java/com/nttdata/calender/WebMvcConfig.java @@ -1,27 +1,33 @@ package com.nttdata.calender; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import com.nttdata.calender.api.RequestInterceptor; import com.nttdata.calender.api.rsso.RssoInterceptor; @Configuration public class WebMvcConfig implements WebMvcConfigurer { private final RssoInterceptor sessionInterceptor; + private final RequestInterceptor requestInterceptor; - public WebMvcConfig(RssoInterceptor sessionInterceptor) { + @Autowired + public WebMvcConfig(RssoInterceptor sessionInterceptor, RequestInterceptor requestInterceptor) { this.sessionInterceptor = sessionInterceptor; + this.requestInterceptor = requestInterceptor; } /** - * Adds the session interceptor to the interceptor registry. + * Adds the session interceptor and request interceptor to the interceptor registry. * * @param registry the interceptor registry. */ @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(sessionInterceptor); + registry.addInterceptor(sessionInterceptor).addPathPatterns("/**"); + registry.addInterceptor(requestInterceptor).addPathPatterns("/**"); } -} \ No newline at end of file +} 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 7cb2f1d..823437a 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -254,6 +254,7 @@ public class KalenderRestController { @ResponseBody public ChangeResponse getChanges(@RequestBody ChangeRequest request) throws ARException, NotFoundError, ValidationError { + return change.get(request); } diff --git a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java new file mode 100644 index 0000000..c9ae1e0 --- /dev/null +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -0,0 +1,38 @@ +package com.nttdata.calender.api; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Component +public class RequestInterceptor implements HandlerInterceptor { + + private static final Logger logger = LogManager.getLogger("application"); + private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + // Print current datetime before handling the request + String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); + String out = currentDateTime + " - handling request: " + request.getRequestURI(); + logger.info(out); + System.out.println(out); + return true; // Continue with the request + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) + throws Exception { + if (ex == null) + System.out.println("Success in handling request: " + request.getRequestURI()); + else + System.out.println("Error in handling request: " + request.getRequestURI()); + } +} 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 1500fc0..55f0c26 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -87,7 +87,6 @@ public class Change { * @throws ValidationError if there is an invalid filter or qualification */ public ChangeResponse get(ChangeRequest request) throws ARException, NotFoundError, ValidationError { - LoggerTemplates log = new LoggerTemplates(api); var peopleFullName = processPeopleInfo(request); @@ -165,9 +164,7 @@ public class Change { .map(Value::getIntValue) .orElse(-1)); } - - - System.out.println("\nStatus: "+change.getState()); + change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); change.setResourceName(getValueStringByID(entry, "ResourceName")); From 330823b41db9631dd6135791655c9f06ab590614 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Tue, 18 Jun 2024 20:06:06 +0200 Subject: [PATCH 02/15] cleaning code + adding transaction id --- .../calender/api/KalenderRestController.java | 21 ++++++++++++------- .../calender/api/RequestInterceptor.java | 16 +++++++++++--- .../com/nttdata/calender/changes/Change.java | 7 ------- .../calender/changes/query/Filter.java | 2 -- .../nttdata/calender/contracts/Contract.java | 21 ++++++------------- .../com/nttdata/calender/presets/Presets.java | 1 - .../com/nttdata/calender/states/State.java | 4 ++-- 7 files changed, 35 insertions(+), 37 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 823437a..9994d55 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -116,19 +116,27 @@ public class KalenderRestController { * @throws ARException * @throws JsonProcessingException if an exception occurs during JSON processing */ + @CrossOrigin("*") @GetMapping("/api/getUser") @ResponseBody - public String getUserId() throws ARException { - + public ResponseEntity getUserId() throws ARException { var query = new Query.QueryBuilder("CTM:People LookUp") .addFieldId("Name", 1000000017) .build(); - var name = this.javaAPI.queryFieldsById("\'4\'==\"" + javaAPI.getUser() + "\"", query.getFieldIds(), - query.getFormName(), null, 0, 0).get(0); + var results = this.javaAPI.queryFieldsById("'4'==\"" + javaAPI.getUser() + "\"", query.getFieldIds(), + query.getFormName(), null, 0, 0); + + if (results.isEmpty()) { + // Handle the case where no results are found + String errorMessage = "No user found with the given criteria."; + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"error\": \"" + errorMessage + "\"}"); + } + + var name = results.get(0); String jsonString = "{\"userId\": \"" + name.get(query.getFieldId("Name")) + "\"}"; - return jsonString; + return ResponseEntity.ok(jsonString); } /** @@ -208,7 +216,7 @@ public class KalenderRestController { @ResponseBody public ArrayList getContracts() throws ARException, NotFoundError { Contract contract = new Contract(); - System.out.println(javaAPI.getUser()); + // System.out.println(javaAPI.getUser()); return contract.get(this.javaAPI); } @@ -254,7 +262,6 @@ public class KalenderRestController { @ResponseBody public ChangeResponse getChanges(@RequestBody ChangeRequest request) throws ARException, NotFoundError, ValidationError { - return change.get(request); } 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 c9ae1e0..f40c922 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -7,8 +7,11 @@ import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Calendar; @Component public class RequestInterceptor implements HandlerInterceptor { @@ -23,16 +26,23 @@ public class RequestInterceptor implements HandlerInterceptor { String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); String out = currentDateTime + " - handling request: " + request.getRequestURI(); logger.info(out); - System.out.println(out); + // System.out.println(out); return true; // Continue with the request } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + + String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); + long transactionId = System.currentTimeMillis(); + if (ex == null) - System.out.println("Success in handling request: " + request.getRequestURI()); + System.out.println( + "Transaction ID: " + transactionId + "\n" + currentDateTime + " [SUCCESS] handling request: " + + request.getRequestURI() + "\n"); else - System.out.println("Error in handling request: " + request.getRequestURI()); + System.err.println(currentDateTime + " [ERROR] handling request: " + request.getRequestURI() + "\n" + + ex.getMessage() + "\n"); } } 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 55f0c26..5f30734 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -92,15 +92,11 @@ public class Change { var peopleFullName = processPeopleInfo(request); var filter = request.getFilter(); - for (var v : filter.getFilterElement()) { - System.out.println(v.getFilter() + ", " + v.getColumn() +", " + v.getCriteria()); - } var qualifier = filter.constructQualifier(queryChange, api); SortInfo sort = request.constructSortInfo(queryChange); log.initLog("getChanges", api.getUser()); // Logging - System.out.println(qualifier); var entries = api.queryFieldsById(qualifier, this.queryChange.getFieldIds(), this.queryChange.getFormName(), sort, request.getSliceStart(), @@ -151,7 +147,6 @@ public class Change { } } if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ - System.out.println("\n++++++++"+getValueStringByID(entry, "CurrentStageNumber")); if(getValueStringByID(entry, "CurrentStageNumber").equals("1")){ change.setState(9); }else{ @@ -195,8 +190,6 @@ public class Change { change.setPlanTime(convertPlanTime(ptHours, ptMinutes)); changes.add(change); } - - System.out.println(entries.size()); api.freeImpersonatedUser(); return new ChangeResponse(entriesSize, changes); diff --git a/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java b/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java index 82a82db..dc71a94 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java +++ b/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java @@ -103,8 +103,6 @@ public class Filter { var column = current_filter.getColumn(); var criterias = current_filter.getCriteria(); - System.out.println(current_filter + " | "); - if (column.isEmpty() || criterias.length <= 0) { throw new ValidationError("Fields inside filter empty"); } diff --git a/backend/src/main/java/com/nttdata/calender/contracts/Contract.java b/backend/src/main/java/com/nttdata/calender/contracts/Contract.java index cf14993..d7eadce 100644 --- a/backend/src/main/java/com/nttdata/calender/contracts/Contract.java +++ b/backend/src/main/java/com/nttdata/calender/contracts/Contract.java @@ -24,7 +24,6 @@ public class Contract { this.contracts = new ArrayList(); } - /** * Queries the Remedy AR Server using the provided `api` object to retrieve * Contract IDs @@ -33,22 +32,20 @@ public class Contract { * ones in the `contracts` list. * * @param api the RemedyJavaAPI object used to connect to the Remedy AR Server - * @return + * @return * @throws ARException if an error occurs during the querying process * @throws NotFoundError if no contracts are found in the given context */ public ArrayList queryContracts(RemedyJavaAPI api) throws ARException, NotFoundError { ArrayList allContracts = new ArrayList(); - var queryContracts = new Query.QueryBuilder(formName_contracts) .addFieldId("Id", 179) .addFieldId("Name", 700008020).build(); - System.out.println("\n### USER: "+api.getUser()); - allContracts = api - .queryFieldsById("\'4\' = \""+api.getUser()+"\"", queryContracts.getFieldIds(), formName_contracts, null, + .queryFieldsById("\'4\' = \"" + api.getUser() + "\"", queryContracts.getFieldIds(), formName_contracts, + null, 0, 0) .stream() .map(entry -> new ContractGetResponse( @@ -57,22 +54,16 @@ public class Contract { .distinct() .collect(Collectors.toCollection(ArrayList::new)); - for (ContractGetResponse contractGetResponse : allContracts) { - System.out.println(contractGetResponse.name); - } - - - if (allContracts.isEmpty()) { - System.out.println("No contracts found in this context"); + System.out.println("No contracts found in this context"); } return allContracts; } /** * @return the list of contracts - * @throws ARException - * @throws NotFoundError + * @throws ARException + * @throws NotFoundError */ public ArrayList get(RemedyJavaAPI api) throws NotFoundError, ARException { return this.queryContracts(api); 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 e8a1bad..3711cca 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -76,7 +76,6 @@ public class Presets { var guid = preference.get(0).get(prefQuery.getFieldId("GUID")); if (guid.toString() == null) { // IF GUID IS NULL PUT SYSTEM DEFAULT INSIDE - System.out.println("GEHT REIN"); var queryPreferenceNewValue = new Query.QueryBuilder(formUserPref) .addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build(); var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", diff --git a/backend/src/main/java/com/nttdata/calender/states/State.java b/backend/src/main/java/com/nttdata/calender/states/State.java index 5540a91..c959576 100644 --- a/backend/src/main/java/com/nttdata/calender/states/State.java +++ b/backend/src/main/java/com/nttdata/calender/states/State.java @@ -114,7 +114,7 @@ public class State { populateStateInfo(stateFields, stateStatusFields, configurationQuery, configurationStatusQuery); // Print state information - printStateInfo(); + // printStateInfo(); } private void populateStateInfo(List stateFields, List stateStatusFields, @@ -135,7 +135,7 @@ public class State { implementerFlag = stateField.get(configurationQuery.getFieldId("implementerFlag")).toString() .equals("SETIMPLEMENTER_YES"); } catch (Exception e) { - e.printStackTrace(); + // e.printStackTrace(); } String engName = stateField.get(configurationQuery.getFieldId("engName")).toString(); From 2408fdba6322613e87640734f2c6449daa183cc0 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Wed, 19 Jun 2024 13:21:02 +0200 Subject: [PATCH 03/15] changes --- .../calender/api/RequestInterceptor.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) 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 f40c922..476cdac 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -8,10 +8,8 @@ import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Calendar; @Component public class RequestInterceptor implements HandlerInterceptor { @@ -20,29 +18,32 @@ public class RequestInterceptor implements HandlerInterceptor { private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // Print current datetime before handling the request String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); - String out = currentDateTime + " - handling request: " + request.getRequestURI(); + long transactionId = System.currentTimeMillis(); + String out = "Transaction ID = " + transactionId + " " + currentDateTime + " - handling request: " + request.getRequestURI(); logger.info(out); - // System.out.println(out); return true; // Continue with the request } @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 { + // Only react for POST requests + if ("POST".equalsIgnoreCase(request.getMethod())) { + // Print current datetime after handling the request + String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); + long transactionId = System.currentTimeMillis(); - String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); - long transactionId = System.currentTimeMillis(); - - if (ex == null) - System.out.println( - "Transaction ID: " + transactionId + "\n" + currentDateTime + " [SUCCESS] handling request: " - + request.getRequestURI() + "\n"); - else - System.err.println(currentDateTime + " [ERROR] handling request: " + request.getRequestURI() + "\n" - + ex.getMessage() + "\n"); + if (ex == null) { + String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [SUCCESS] handling request: " + request.getRequestURI() + "\n"; + logger.info(out); + System.out.println(out); + } else { + String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [ERROR] handling request: " + request.getRequestURI() + "\n" + ex.getMessage() + "\n"; + logger.error(out); + System.err.println(out); + } + } } } From 8813ed9f7dfa5972ad516fce8128ac4bc9777915 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Thu, 20 Jun 2024 14:11:42 +0200 Subject: [PATCH 04/15] output method + changeNR --- .../calender/api/KalenderRestController.java | 5 +- .../calender/api/RequestInterceptor.java | 52 +++++++++++++++---- 2 files changed, 45 insertions(+), 12 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 9994d55..b87ed53 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -3,6 +3,8 @@ package com.nttdata.calender.api; import java.util.ArrayList; import java.util.List; +import javax.servlet.http.HttpServletRequest; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.checkerframework.common.util.report.qual.ReportCall; @@ -278,8 +280,9 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("/api/updateChange") @ResponseBody - public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request) + public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request, HttpServletRequest httpRequest) throws ARException, ValidationError { + httpRequest.setAttribute("changeUpdateRequest", request); change.modifyTimestamp(request); return request; } 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 476cdac..af3008d 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -3,8 +3,11 @@ package com.nttdata.calender.api; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; +import com.nttdata.calender.changes.ChangeUpdateRequest; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -18,32 +21,59 @@ public class RequestInterceptor implements HandlerInterceptor { private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { // Print current datetime before handling the request String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); - String out = "Transaction ID = " + transactionId + " " + currentDateTime + " - handling request: " + request.getRequestURI(); + String out = "Transaction ID = " + transactionId + " " + currentDateTime + " - handling request: " + + request.getRequestURI(); logger.info(out); return true; // Continue with the request } + private static String output(String time, long id, String user, String status, String action, String ticket, + String result) { + return String.format("Time: %s\nTransaction ID: %d\nUser: %s\nStatus: %s\nAction: %s\nTicket: %s\nResult: %s", + time, id, user, status, action, ticket, result); + } + @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 { + // Only react for POST requests if ("POST".equalsIgnoreCase(request.getMethod())) { // Print current datetime after handling the request String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); + String changeNr = ""; - if (ex == null) { - String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [SUCCESS] handling request: " + request.getRequestURI() + "\n"; - logger.info(out); - System.out.println(out); - } else { - String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [ERROR] handling request: " + request.getRequestURI() + "\n" + ex.getMessage() + "\n"; - logger.error(out); - System.err.println(out); + if (handler instanceof HandlerMethod) { + HandlerMethod handlerMethod = (HandlerMethod) handler; + if (handlerMethod.getMethod().getName().equals("updateChange")) { + ChangeUpdateRequest changeUpdateRequest = (ChangeUpdateRequest) request + .getAttribute("changeUpdateRequest"); + if (changeUpdateRequest != null) { + changeNr = changeUpdateRequest.getChangeNr(); + } + } + + System.out.println("\n" + output(currentDateTime, transactionId, "User", "Success", request.getRequestURI(), + changeNr, "Successful")); } + + // if (ex == null) { + // String out = currentDateTime + "Transaction ID = " + transactionId + // + "\nDone / Success\nHandling Request: " + request.getRequestURI() + "\n"; + // logger.info(out); + // System.out.println(out); + // } else { + // String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [ERROR] handling request: " + // + request.getRequestURI() + "\n" + ex.getMessage() + "\n"; + // logger.error(out); + // System.err.println(out); + // } } } } From d264c406bcb9e8001dab80a07ac73907e542ec89 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Thu, 20 Jun 2024 18:57:16 +0200 Subject: [PATCH 05/15] modified request interceptor --- .../calender/api/KalenderRestController.java | 3 +- .../calender/api/RequestInterceptor.java | 56 +++++++++---------- 2 files changed, 30 insertions(+), 29 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 b87ed53..5a84028 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -300,8 +300,9 @@ public class KalenderRestController { */ @CrossOrigin("*") @PostMapping("/api/updateState") - public ResponseEntity updateState(@RequestBody StateChangeRequest request) throws ARException { + public ResponseEntity updateState(@RequestBody StateChangeRequest request, HttpServletRequest httpRequest) throws ARException { logRequest("/updateState", request.toString()); + httpRequest.setAttribute("changeUpdateState", request); var response = stateChange.createStateChange(request); return ResponseEntity.ok(response); } 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 af3008d..f8196de 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -7,6 +7,7 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import com.nttdata.calender.changes.ChangeUpdateRequest; +import com.nttdata.calender.states.StateChangeRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -23,57 +24,56 @@ public class RequestInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - // Print current datetime before handling the request String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); - String out = "Transaction ID = " + transactionId + " " + currentDateTime + " - handling request: " - + request.getRequestURI(); + String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, + request.getRequestURI()); logger.info(out); - return true; // Continue with the request + return true; } private static String output(String time, long id, String user, String status, String action, String ticket, String result) { - return String.format("Time: %s\nTransaction ID: %d\nUser: %s\nStatus: %s\nAction: %s\nTicket: %s\nResult: %s", + return String.format("%s\nTransaction ID: %d\nUser: %s\nStatus: %s\nAction: %s\nTicket: %s\nResult: %s", time, id, user, status, action, ticket, result); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - - // Only react for POST requests if ("POST".equalsIgnoreCase(request.getMethod())) { - // Print current datetime after handling the request String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); String changeNr = ""; if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; - if (handlerMethod.getMethod().getName().equals("updateChange")) { - ChangeUpdateRequest changeUpdateRequest = (ChangeUpdateRequest) request - .getAttribute("changeUpdateRequest"); - if (changeUpdateRequest != null) { - changeNr = changeUpdateRequest.getChangeNr(); - } + String action = handlerMethod.getMethod().getName(); + Object requestBody = request.getAttribute("requestBody"); + + if (requestBody instanceof ChangeUpdateRequest) { + ChangeUpdateRequest changeUpdateRequest = (ChangeUpdateRequest) requestBody; + changeNr = changeUpdateRequest.getChangeNr(); + action += " | Date change"; + } else if (requestBody instanceof StateChangeRequest) { + StateChangeRequest changeStateRequest = (StateChangeRequest) requestBody; + changeNr = changeStateRequest.getChangeNr(); + action += " | State transition"; } - System.out.println("\n" + output(currentDateTime, transactionId, "User", "Success", request.getRequestURI(), - changeNr, "Successful")); - } + String status = (ex == null) ? "Success" : "Error"; + String result = (ex == null) ? "Successful" : ex.getMessage(); + String out = output(currentDateTime, transactionId, "User", status, + request.getRequestURI() + " | " + action, changeNr, result); - // if (ex == null) { - // String out = currentDateTime + "Transaction ID = " + transactionId - // + "\nDone / Success\nHandling Request: " + request.getRequestURI() + "\n"; - // logger.info(out); - // System.out.println(out); - // } else { - // String out = "Transaction ID = " + transactionId + " " + currentDateTime + " [ERROR] handling request: " - // + request.getRequestURI() + "\n" + ex.getMessage() + "\n"; - // logger.error(out); - // System.err.println(out); - // } + if (ex == null) { + logger.info(out); + } else { + logger.error(out); + } + + System.out.println("\n" + out); + } } } } From e2d9793871057546caaf64f312815203eea3dd56 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Thu, 20 Jun 2024 19:22:00 +0200 Subject: [PATCH 06/15] fixed issues --- .../java/com/nttdata/calender/api/KalenderRestController.java | 4 ++-- .../java/com/nttdata/calender/api/RequestInterceptor.java | 4 ++-- .../src/main/java/com/nttdata/calender/changes/Change.java | 2 ++ 3 files changed, 6 insertions(+), 4 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 5a84028..84e109d 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -282,7 +282,7 @@ public class KalenderRestController { @ResponseBody public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request, HttpServletRequest httpRequest) throws ARException, ValidationError { - httpRequest.setAttribute("changeUpdateRequest", request); + httpRequest.setAttribute("requestBody", request); change.modifyTimestamp(request); return request; } @@ -302,7 +302,7 @@ public class KalenderRestController { @PostMapping("/api/updateState") public ResponseEntity updateState(@RequestBody StateChangeRequest request, HttpServletRequest httpRequest) throws ARException { logRequest("/updateState", request.toString()); - httpRequest.setAttribute("changeUpdateState", request); + httpRequest.setAttribute("requestBody", request); var response = stateChange.createStateChange(request); return ResponseEntity.ok(response); } 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 f8196de..675325f 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -53,11 +53,11 @@ public class RequestInterceptor implements HandlerInterceptor { if (requestBody instanceof ChangeUpdateRequest) { ChangeUpdateRequest changeUpdateRequest = (ChangeUpdateRequest) requestBody; - changeNr = changeUpdateRequest.getChangeNr(); + changeNr += changeUpdateRequest.getChangeNr(); action += " | Date change"; } else if (requestBody instanceof StateChangeRequest) { StateChangeRequest changeStateRequest = (StateChangeRequest) requestBody; - changeNr = changeStateRequest.getChangeNr(); + changeNr += changeStateRequest.getChangeNr(); action += " | State transition"; } 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 5f30734..0083184 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -212,6 +212,8 @@ public class Change { .addFieldId("FullName", 1000000017) .addFieldId("SupportGroupId", 1000000079) .build(); + + System.out.println(api.getUser()); var peopleInfos = api.queryFieldsById("\'Login ID\' = \"" + api.getUser() + "\"", queryPerson.getFieldIds(), queryPerson.getFormName(), null, 0, 0); From aa2763b4b25b866598b73567f1ef7c6955d64f29 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Thu, 27 Jun 2024 15:39:37 +0200 Subject: [PATCH 07/15] transaction --- .vscode/settings.json | 3 ++- .../nttdata/calender/api/KalenderRestController.java | 11 ++++++++--- .../com/nttdata/calender/api/RequestInterceptor.java | 11 ++++++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index e0f15db..c6fe658 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "java.configuration.updateBuildConfiguration": "automatic" + "java.configuration.updateBuildConfiguration": "automatic", + "java.compile.nullAnalysis.mode": "disabled" } \ No newline at end of file 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 84e109d..7b5fe01 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -300,7 +300,8 @@ public class KalenderRestController { */ @CrossOrigin("*") @PostMapping("/api/updateState") - public ResponseEntity updateState(@RequestBody StateChangeRequest request, HttpServletRequest httpRequest) throws ARException { + public ResponseEntity updateState(@RequestBody StateChangeRequest request, HttpServletRequest httpRequest) + throws ARException { logRequest("/updateState", request.toString()); httpRequest.setAttribute("requestBody", request); var response = stateChange.createStateChange(request); @@ -318,7 +319,9 @@ public class KalenderRestController { */ @CrossOrigin("*") @PostMapping("api/updateImplementer") - public ResponseEntity updateImplementer(@RequestBody ImplementerUpdateRequest request) throws ARException { + public ResponseEntity updateImplementer(@RequestBody ImplementerUpdateRequest request, + HttpServletRequest httpRequest) throws ARException { + httpRequest.setAttribute("requestBody", request); var response = implementer.update(request); return ResponseEntity.ok(response); } @@ -335,7 +338,9 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/updateApproval") @ResponseBody - public ResponseEntity updateApproval(@RequestBody ApprovalUpdateRequest request) throws ARException { + public ResponseEntity updateApproval(@RequestBody ApprovalUpdateRequest request, + HttpServletRequest httpRequest) throws ARException { + httpRequest.setAttribute("requestBody", request); var response = approval.update(request); return ResponseEntity.ok(response); } 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 675325f..f16443f 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -6,7 +6,9 @@ import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; +import com.nttdata.calender.approval.ApprovalUpdateRequest; import com.nttdata.calender.changes.ChangeUpdateRequest; +import com.nttdata.calender.implementer.ImplementerUpdateRequest; import com.nttdata.calender.states.StateChangeRequest; import javax.servlet.http.HttpServletRequest; @@ -34,7 +36,8 @@ public class RequestInterceptor implements HandlerInterceptor { private static String output(String time, long id, String user, String status, String action, String ticket, String result) { - return String.format("%s\nTransaction ID: %d\nUser: %s\nStatus: %s\nAction: %s\nTicket: %s\nResult: %s", + return String.format( + "%s\n Transaction ID: %d\n User: %s\n Status: %s\n Action: %s\n Ticket: %s\n Result: %s", time, id, user, status, action, ticket, result); } @@ -59,6 +62,12 @@ public class RequestInterceptor implements HandlerInterceptor { StateChangeRequest changeStateRequest = (StateChangeRequest) requestBody; changeNr += changeStateRequest.getChangeNr(); action += " | State transition"; + } else if (requestBody instanceof ImplementerUpdateRequest) { + ImplementerUpdateRequest implementerUpdateRequest = (ImplementerUpdateRequest) requestBody; + action += " | Implementer Update"; + } else if (requestBody instanceof ApprovalUpdateRequest) { + ApprovalUpdateRequest approvalUpdateRequest = (ApprovalUpdateRequest) requestBody; + action += " | Approval Update"; } String status = (ex == null) ? "Success" : "Error"; From 9523311710da66c6e3b922f1f080becdd1fa39d6 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Wed, 3 Jul 2024 16:11:46 +0200 Subject: [PATCH 08/15] simplified code --- .../calender/api/KalenderRestController.java | 33 +++++-- .../calender/api/RequestInterceptor.java | 97 +++++++++++-------- 2 files changed, 83 insertions(+), 47 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 7b5fe01..457b1b1 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -283,6 +283,10 @@ 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); return request; } @@ -304,6 +308,7 @@ public class KalenderRestController { throws ARException { logRequest("/updateState", request.toString()); httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); var response = stateChange.createStateChange(request); return ResponseEntity.ok(response); } @@ -322,6 +327,7 @@ public class KalenderRestController { public ResponseEntity updateImplementer(@RequestBody ImplementerUpdateRequest request, HttpServletRequest httpRequest) throws ARException { httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); var response = implementer.update(request); return ResponseEntity.ok(response); } @@ -341,6 +347,7 @@ public class KalenderRestController { public ResponseEntity updateApproval(@RequestBody ApprovalUpdateRequest request, HttpServletRequest httpRequest) throws ARException { httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); var response = approval.update(request); return ResponseEntity.ok(response); } @@ -363,9 +370,11 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("/api/savePreset") @ResponseBody - public List savePreset(@RequestBody Preset request) + public List savePreset(@RequestBody Preset request, HttpServletRequest httpRequest) throws ARException, ValidationError, NotFoundError { Presets presets = new Presets(javaAPI); + httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); presets.savePreset(request); return presets.getAll(); } @@ -373,8 +382,12 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("/api/selectPreset") @ResponseBody - public boolean selectPreset(@RequestBody SelectPresetRequest guid) throws ARException, + public boolean selectPreset(@RequestBody SelectPresetRequest guid, HttpServletRequest httpRequest) + throws ARException, NotFoundError { + httpRequest.setAttribute("requestBody", guid); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences"); + Presets presets = new Presets(javaAPI); return presets.selectPreset(guid); } @@ -390,8 +403,10 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/updatePreset") @ResponseBody - public List updatePreset(@RequestBody UpdatePresetRequest request) throws NotFoundError, ARException { + public List updatePreset(@RequestBody UpdatePresetRequest request, HttpServletRequest httpRequest) throws NotFoundError, ARException { Presets presets = new Presets(javaAPI); + httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); presets.updatePreset(request); return presets.getAll(); } @@ -399,8 +414,10 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/deletePreset") @ResponseBody - public Object deletePreset(@RequestBody DeletePresetRequest request) throws ARException, NotFoundError { + public Object deletePreset(@RequestBody DeletePresetRequest request, HttpServletRequest httpRequest) throws ARException, NotFoundError { Presets presets = new Presets(javaAPI); + httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); presets.deletePreset(request); return presets.getAll(); } @@ -408,8 +425,10 @@ public class KalenderRestController { @CrossOrigin @PostMapping("api/renamePreset") @ResponseBody - public List renamePreset(@RequestBody RenamePresetRequest request) throws NotFoundError, ARException { + public List renamePreset(@RequestBody RenamePresetRequest request, HttpServletRequest httpRequest) throws NotFoundError, ARException { Presets presets = new Presets(javaAPI); + httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); presets.renamePreset(request); return presets.getAll(); } @@ -417,8 +436,10 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/editUserPreferences") @ResponseBody - public void editUserPreferences(@RequestBody EditUserPreferencesRequest request) throws ARException, NotFoundError { + public void editUserPreferences(@RequestBody EditUserPreferencesRequest request, HttpServletRequest httpRequest) throws ARException, NotFoundError { Presets presets = new Presets(javaAPI); + httpRequest.setAttribute("requestBody", request); + httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences"); presets.editUserPreferences(request); } 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 f16443f..2b9dcad 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -9,16 +9,24 @@ import org.springframework.web.servlet.HandlerInterceptor; import com.nttdata.calender.approval.ApprovalUpdateRequest; import com.nttdata.calender.changes.ChangeUpdateRequest; import com.nttdata.calender.implementer.ImplementerUpdateRequest; +import com.nttdata.calender.presets.Preset; +import com.nttdata.calender.presets.SelectPresetRequest; +import com.nttdata.calender.presets.UpdatePresetRequest; import com.nttdata.calender.states.StateChangeRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.bmc.arsys.api.Value; + +import static org.mockito.ArgumentMatchers.startsWith; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Component public class RequestInterceptor implements HandlerInterceptor { + private RemedyJavaAPI api; + private final static String form = "ASF:CHG_CAL_Transactions"; private static final Logger logger = LogManager.getLogger("application"); private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @@ -26,6 +34,7 @@ public class RequestInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + api = new RemedyJavaAPI(); String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, @@ -34,55 +43,61 @@ public class RequestInterceptor implements HandlerInterceptor { return true; } - private static String output(String time, long id, String user, String status, String action, String ticket, - String result) { - return String.format( - "%s\n Transaction ID: %d\n User: %s\n Status: %s\n Action: %s\n Ticket: %s\n Result: %s", - time, id, user, status, action, ticket, result); - } - @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - if ("POST".equalsIgnoreCase(request.getMethod())) { - String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); - long transactionId = System.currentTimeMillis(); - String changeNr = ""; - if (handler instanceof HandlerMethod) { - HandlerMethod handlerMethod = (HandlerMethod) handler; - String action = handlerMethod.getMethod().getName(); - Object requestBody = request.getAttribute("requestBody"); + if (!"POST".equalsIgnoreCase(request.getMethod()) || !(handler instanceof HandlerMethod)) { + return; + } - if (requestBody instanceof ChangeUpdateRequest) { - ChangeUpdateRequest changeUpdateRequest = (ChangeUpdateRequest) requestBody; - changeNr += changeUpdateRequest.getChangeNr(); - action += " | Date change"; - } else if (requestBody instanceof StateChangeRequest) { - StateChangeRequest changeStateRequest = (StateChangeRequest) requestBody; - changeNr += changeStateRequest.getChangeNr(); - action += " | State transition"; - } else if (requestBody instanceof ImplementerUpdateRequest) { - ImplementerUpdateRequest implementerUpdateRequest = (ImplementerUpdateRequest) requestBody; - action += " | Implementer Update"; - } else if (requestBody instanceof ApprovalUpdateRequest) { - ApprovalUpdateRequest approvalUpdateRequest = (ApprovalUpdateRequest) requestBody; - action += " | Approval Update"; - } + long transactionId = System.currentTimeMillis(); + Query entry = null; - String status = (ex == null) ? "Success" : "Error"; - String result = (ex == null) ? "Successful" : ex.getMessage(); - String out = output(currentDateTime, transactionId, "User", status, - request.getRequestURI() + " | " + action, changeNr, result); + Object requestBody = request.getAttribute("requestBody"); + String formName = (String) request.getAttribute("formName"); + int status = (ex == null) ? 3 : 2; - if (ex == null) { - logger.info(out); - } else { - logger.error(out); - } + if (requestBody instanceof ChangeUpdateRequest) { + entry = buildQueryEntry(transactionId, "Date change", formName, ((ChangeUpdateRequest) requestBody).getChangeNr(), getAssignedTo(), status); + } else if (requestBody instanceof StateChangeRequest) { + entry = buildQueryEntry(transactionId, "State transition", formName, ((StateChangeRequest) requestBody).getChangeNr(), getAssignedTo(), status); + } else if (requestBody instanceof ImplementerUpdateRequest) { + entry = buildQueryEntry(transactionId, "Implementer Update", formName, ((ImplementerUpdateRequest) requestBody).getPkgId(), getAssignedTo(), status); + } else if (requestBody instanceof ApprovalUpdateRequest) { + entry = buildQueryEntry(transactionId, "Approval Update", formName, ((ApprovalUpdateRequest) requestBody).getChangeNr(), getAssignedTo(), status); + } else if (requestBody instanceof Preset) { + entry = buildQueryEntry(transactionId, "Save Preset", formName, ((Preset) requestBody).getId(), getAssignedTo(), status); + } else if (requestBody instanceof SelectPresetRequest) { + entry = buildQueryEntry(transactionId, "Preset selected", formName, ((SelectPresetRequest) requestBody).getGuid(), getAssignedTo(), status); + } else if (requestBody instanceof UpdatePresetRequest) { + entry = buildQueryEntry(transactionId, "Update Preset", formName, ((UpdatePresetRequest) requestBody).getId(), getAssignedTo(), status); + } - System.out.println("\n" + out); - } + 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 String getAssignedTo() { + String assignedTo = api.getUser(); + return (assignedTo == null || assignedTo.isEmpty()) ? "Placeholder User" : assignedTo; + } + } From d0a4d8a0a6e599fbae8e41519bb556e20cc06eb3 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Wed, 3 Jul 2024 16:17:10 +0200 Subject: [PATCH 09/15] added interceptor to all post actions --- .../calender/api/KalenderRestController.java | 30 +++++++++++++------ .../calender/api/RequestInterceptor.java | 11 ++++++- 2 files changed, 31 insertions(+), 10 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 457b1b1..9b15d1f 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -309,6 +309,7 @@ public class KalenderRestController { logRequest("/updateState", request.toString()); httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); + var response = stateChange.createStateChange(request); return ResponseEntity.ok(response); } @@ -328,6 +329,7 @@ public class KalenderRestController { HttpServletRequest httpRequest) throws ARException { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); + var response = implementer.update(request); return ResponseEntity.ok(response); } @@ -348,6 +350,7 @@ public class KalenderRestController { HttpServletRequest httpRequest) throws ARException { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions"); + var response = approval.update(request); return ResponseEntity.ok(response); } @@ -372,9 +375,10 @@ public class KalenderRestController { @ResponseBody public List savePreset(@RequestBody Preset request, HttpServletRequest httpRequest) throws ARException, ValidationError, NotFoundError { - Presets presets = new Presets(javaAPI); httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); + + Presets presets = new Presets(javaAPI); presets.savePreset(request); return presets.getAll(); } @@ -403,10 +407,12 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/updatePreset") @ResponseBody - public List updatePreset(@RequestBody UpdatePresetRequest request, HttpServletRequest httpRequest) throws NotFoundError, ARException { - Presets presets = new Presets(javaAPI); + public List updatePreset(@RequestBody UpdatePresetRequest request, HttpServletRequest httpRequest) + throws NotFoundError, ARException { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); + + Presets presets = new Presets(javaAPI); presets.updatePreset(request); return presets.getAll(); } @@ -414,10 +420,12 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/deletePreset") @ResponseBody - public Object deletePreset(@RequestBody DeletePresetRequest request, HttpServletRequest httpRequest) throws ARException, NotFoundError { - Presets presets = new Presets(javaAPI); + public Object deletePreset(@RequestBody DeletePresetRequest request, HttpServletRequest httpRequest) + throws ARException, NotFoundError { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); + + Presets presets = new Presets(javaAPI); presets.deletePreset(request); return presets.getAll(); } @@ -425,10 +433,12 @@ public class KalenderRestController { @CrossOrigin @PostMapping("api/renamePreset") @ResponseBody - public List renamePreset(@RequestBody RenamePresetRequest request, HttpServletRequest httpRequest) throws NotFoundError, ARException { - Presets presets = new Presets(javaAPI); + public List renamePreset(@RequestBody RenamePresetRequest request, HttpServletRequest httpRequest) + throws NotFoundError, ARException { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); + + Presets presets = new Presets(javaAPI); presets.renamePreset(request); return presets.getAll(); } @@ -436,10 +446,12 @@ public class KalenderRestController { @CrossOrigin("*") @PostMapping("api/editUserPreferences") @ResponseBody - public void editUserPreferences(@RequestBody EditUserPreferencesRequest request, HttpServletRequest httpRequest) throws ARException, NotFoundError { - Presets presets = new Presets(javaAPI); + public void editUserPreferences(@RequestBody EditUserPreferencesRequest request, HttpServletRequest httpRequest) + throws ARException, NotFoundError { httpRequest.setAttribute("requestBody", request); httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences"); + + Presets presets = new Presets(javaAPI); presets.editUserPreferences(request); } 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 2b9dcad..4fef020 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -9,7 +9,10 @@ import org.springframework.web.servlet.HandlerInterceptor; import com.nttdata.calender.approval.ApprovalUpdateRequest; import com.nttdata.calender.changes.ChangeUpdateRequest; import com.nttdata.calender.implementer.ImplementerUpdateRequest; +import com.nttdata.calender.presets.DeletePresetRequest; +import com.nttdata.calender.presets.EditUserPreferencesRequest; import com.nttdata.calender.presets.Preset; +import com.nttdata.calender.presets.RenamePresetRequest; import com.nttdata.calender.presets.SelectPresetRequest; import com.nttdata.calender.presets.UpdatePresetRequest; import com.nttdata.calender.states.StateChangeRequest; @@ -69,9 +72,15 @@ public class RequestInterceptor implements HandlerInterceptor { } else if (requestBody instanceof Preset) { entry = buildQueryEntry(transactionId, "Save Preset", formName, ((Preset) requestBody).getId(), getAssignedTo(), status); } else if (requestBody instanceof SelectPresetRequest) { - entry = buildQueryEntry(transactionId, "Preset selected", formName, ((SelectPresetRequest) requestBody).getGuid(), getAssignedTo(), status); + entry = buildQueryEntry(transactionId, "Select Preset", formName, ((SelectPresetRequest) requestBody).getGuid(), getAssignedTo(), status); } else if (requestBody instanceof UpdatePresetRequest) { entry = buildQueryEntry(transactionId, "Update Preset", formName, ((UpdatePresetRequest) requestBody).getId(), getAssignedTo(), status); + } else if (requestBody instanceof DeletePresetRequest) { + entry = buildQueryEntry(transactionId, "Delete Preset", formName, ((DeletePresetRequest) requestBody).getId(), getAssignedTo(), status); + } else if (requestBody instanceof RenamePresetRequest) { + entry = buildQueryEntry(transactionId, "Rename Preset", formName, ((RenamePresetRequest) requestBody).getId(), getAssignedTo(), status); + } else if (requestBody instanceof EditUserPreferencesRequest) { + entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status); } if (entry != null) { From e643c6c71a2cc9481a5acf4b9f68d315454b2265 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Fri, 5 Jul 2024 20:24:02 +0200 Subject: [PATCH 10/15] 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 + } + } From 99907146adfaf8ead50932ef803639b7dda4e891 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Fri, 5 Jul 2024 20:31:52 +0200 Subject: [PATCH 11/15] field values date change --- .../calender/api/KalenderRestController.java | 7 +- .../com/nttdata/calender/changes/Change.java | 80 ++++++++++++------- 2 files changed, 58 insertions(+), 29 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 b9e52c8..acdc3aa 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -283,13 +283,16 @@ 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. 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 66947c8..f0a0dfb 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -4,6 +4,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Optional; import java.util.TimeZone; @@ -32,6 +33,7 @@ public class Change { private Query queryChange; private RemedyJavaAPI api; private final static String formName = "ASF:WI_TAS_Paket"; + private ArrayList listOfFieldValues; /** * Constructor for the {@link Change} class which gets autowired with the @@ -72,6 +74,17 @@ public class Change { .addFieldId("CurrentStageNumber", 301541700) .addFieldId("Plantime", 666000001) .build(); + 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 } /** @@ -122,7 +135,7 @@ public class Change { + "\") AND (\'10000\' = \"" + getValueStringByID(entry, "ApprovalProcessName") + "\") AND (\'13207\' LIKE \"%" + api.getUser() + "%\")"; - + var queryApprovalProcessName = api.queryFieldsById(qual, queryApproval.getFieldIds(), queryApproval.getFormName(), sort, 0, 0); @@ -138,28 +151,32 @@ public class Change { change.setChangeNr(getValueStringByID(entry, "ChangeNr")); change.setSupportGroup(getValueStringByID(entry, "SupportGroup")); change.setStatusReason(getValueStringByID(entry, "StatusReason")); - if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 10 || Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ - if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 10){ - if(change.getStatusReason().equals("9000")){ + if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1) == 10 + || Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue) + .orElse(-1) == 9) { + if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue) + .orElse(-1) == 10) { + if (change.getStatusReason().equals("9000")) { change.setState(10); - }else{ + } else { change.setState(101); } } - if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ - if(getValueStringByID(entry, "CurrentStageNumber").equals("1")){ + if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue) + .orElse(-1) == 9) { + if (getValueStringByID(entry, "CurrentStageNumber").equals("1")) { change.setState(9); - }else{ + } else { change.setState(91); } } - }else{ + } else { change.setState(Optional.ofNullable(getValue(entry, "State")) - .map(Value::getIntValue) - .orElse(-1)); + .map(Value::getIntValue) + .orElse(-1)); } - + change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); change.setResourceName(getValueStringByID(entry, "ResourceName")); change.setD1(timestampToDateById(entry, "D1")); @@ -246,7 +263,6 @@ public class Change { return totalHours; } - /** * Returns the {@link Value} of an entry based on the provided description. * @@ -302,27 +318,37 @@ public class Change { * @throws ValidationError */ public void modifyTimestamp(ChangeUpdateRequest request) throws ARException, ValidationError { + // Clear the list before processing a new request + listOfFieldValues.clear(); + String entryId = request.getResourceId(); String d2 = request.getD2(); var dateConverter = new DateConverter(); int state = request.getState(); String changeNr = request.getChangeNr(); - + var ts = dateConverter.convertTimestamp(d2); if (state == 0) { - Query query = new Query.QueryBuilder("ASF:WI_TAS_Paket") - .addFieldValue("d2", 1000000350, new Value(ts)).build(); - api.modifyEntry(entryId, query); + Query query = new Query.QueryBuilder("ASF:WI_TAS_Paket") + .addFieldValue("d2", 1000000350, new Value(ts)).build(); + collectFieldValues(query); // Collect field values + api.modifyEntry(entryId, query); } else { - Query queryInfrastructureChange = new Query.QueryBuilder("CHG:Infrastructure Change") - .addFieldValue("d2", 1000000350, new Value(ts)).build(); - - var change = api.queryFieldsById("\'Infrastructure Change ID\' = \"" + changeNr + "\"", - queryInfrastructureChange.getFieldIds(), - queryInfrastructureChange.getFormName(), null, 0, 0); - - api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange); + Query queryInfrastructureChange = new Query.QueryBuilder("CHG:Infrastructure Change") + .addFieldValue("d2", 1000000350, new Value(ts)).build(); + collectFieldValues(queryInfrastructureChange); // Collect field values + + var change = api.queryFieldsById("\'Infrastructure Change ID\' = \"" + changeNr + "\"", + queryInfrastructureChange.getFieldIds(), + queryInfrastructureChange.getFormName(), null, 0, 0); + + api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange); } - - } + } + + private void collectFieldValues(Query query) { + for (var entry : query.getFieldValues()) { + listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + } + } } \ No newline at end of file From b6d01f27ec298b059fefb9346e409ad5ad650d88 Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Fri, 5 Jul 2024 20:50:44 +0200 Subject: [PATCH 12/15] 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; From d3ece6f4e92b395b01497e0e121c64d38136ea7c Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Mon, 8 Jul 2024 16:30:38 +0200 Subject: [PATCH 13/15] added " --- .../calender/api/RequestInterceptor.java | 161 ++++++++++-------- .../nttdata/calender/approval/Approval.java | 2 +- .../com/nttdata/calender/changes/Change.java | 2 +- .../calender/implementer/Implementer.java | 2 +- .../com/nttdata/calender/presets/Presets.java | 2 +- .../nttdata/calender/states/StateChange.java | 2 +- 6 files changed, 93 insertions(+), 78 deletions(-) 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 c392e4c..cef177e 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -21,8 +21,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bmc.arsys.api.Value; -import static org.mockito.ArgumentMatchers.startsWith; - import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @@ -30,100 +28,117 @@ import java.util.List; @Component public class RequestInterceptor implements HandlerInterceptor { private RemedyJavaAPI api; - private final static String form = "ASF:CHG_CAL_Transactions"; - + private static final String FORM_NAME = "ASF:CHG_CAL_Transactions"; private static final Logger logger = LogManager.getLogger("application"); private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { api = new RemedyJavaAPI(); String currentDateTime = LocalDateTime.now().format(dateTimeFormatter); long transactionId = System.currentTimeMillis(); - String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, - request.getRequestURI()); + String out = String.format("Transaction ID = %d %s - handling request: %s", transactionId, currentDateTime, request.getRequestURI()); logger.info(out); return true; } @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(); + Object requestBody = request.getAttribute("requestBody"); + String formName = getValidatedField((String) request.getAttribute("formName"), "Default Form"); + int status = (ex == null) ? 3 : 2; + + List listOfFieldValues = getFieldValues(request); + String fieldValueJson = convertFieldValuesToJson(listOfFieldValues); + + Query entry = null; + + if (requestBody != null) { + if (requestBody instanceof ChangeUpdateRequest) { + ChangeUpdateRequest body = (ChangeUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Date change", formName, body.getChangeNr(), getAssignedTo(), status, body.getResourceId(), fieldValueJson); + } else if (requestBody instanceof StateChangeRequest) { + StateChangeRequest body = (StateChangeRequest) requestBody; + entry = buildQueryEntry(transactionId, "State transition", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof ImplementerUpdateRequest) { + ImplementerUpdateRequest body = (ImplementerUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Implementer Update", formName, body.getPkgId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof ApprovalUpdateRequest) { + ApprovalUpdateRequest body = (ApprovalUpdateRequest) requestBody; + entry = buildQueryEntry(transactionId, "Approval Update", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof Preset) { + Preset body = (Preset) requestBody; + entry = buildQueryEntry(transactionId, "Save Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof SelectPresetRequest) { + SelectPresetRequest body = (SelectPresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Select Preset", formName, body.getGuid(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof UpdatePresetRequest) { + UpdatePresetRequest body = (UpdatePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Update Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof DeletePresetRequest) { + DeletePresetRequest body = (DeletePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Delete Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof RenamePresetRequest) { + RenamePresetRequest body = (RenamePresetRequest) requestBody; + entry = buildQueryEntry(transactionId, "Rename Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + } else if (requestBody instanceof EditUserPreferencesRequest) { + entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, "?", fieldValueJson); + } + + if (entry != null) { + api.createEntry(entry); + } + } + + if (ex != null) { + logger.error("Exception occurred during afterCompletion: ", ex); + } } - long transactionId = System.currentTimeMillis(); - Query entry = null; + private List getFieldValues(HttpServletRequest request) { + return (List) request.getAttribute("listOfFieldValues"); + } - Object requestBody = request.getAttribute("requestBody"); - String formName = (String) request.getAttribute("formName"); - String entryId = (String) request.getAttribute("entryId"); - int status = (ex == null) ? 3 : 2; + private String convertFieldValuesToJson(List fieldValues) { + if (fieldValues == null) { + return "‎"; + } - // 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"); + StringBuilder fieldValueString = new StringBuilder(); + for (String field : fieldValues) { + fieldValueString.append("\"").append(field).append("\", \n"); } // Remove the last comma and space - if (fieldValueString.length() > 1) { + if (fieldValueString.length() >= 1) { fieldValueString.setLength(fieldValueString.length() - 2); } - fieldValueString.append("\n}"); - String fieldValueJson = fieldValueString.toString(); + return fieldValueString.toString(); + } - if (requestBody instanceof ChangeUpdateRequest) { - 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, "?", fieldValueJson); - } else if (requestBody instanceof ImplementerUpdateRequest) { - 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, "?", fieldValueJson); - } else if (requestBody instanceof Preset) { - 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,"?", fieldValueJson); - } else if (requestBody instanceof UpdatePresetRequest) { - 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, "?", fieldValueJson); - } else if (requestBody instanceof RenamePresetRequest) { - 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, "?", fieldValueJson); - } + private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, String assignedTo, int status, String requestId, String fieldValueJson) { + return new Query.QueryBuilder(FORM_NAME) + .addFieldValue("AssignedTo", 4, new Value(getValidatedField(assignedTo, "‎"))) + .addFieldValue("Status", 7, new Value(status)) + .addFieldValue("TransactionID", 666000000, new Value(transactionId)) + .addFieldValue("FieldValue", 666000001, new Value(getValidatedField(fieldValueJson, "‎"))) + .addFieldValue("FormIDs", 666000002, new Value(getValidatedField(requestId, "‎"))) + .addFieldValue("ActionType", 666000003, new Value(getValidatedField(actionType, "‎"))) + .addFieldValue("AffectedForm", 666000004, new Value(getValidatedField(affectedForm, "‎"))) + .addFieldValue("TicketID", 666000005, new Value(getValidatedField(changeNr, "‎"))) + .build(); + } - if (entry != null) { - api.createEntry(entry); - } + private String getAssignedTo() { + return getValidatedField(api.getUser(), "‎"); + } + + private String getValidatedField(String field, String defaultValue) { + return (field == null || field.isEmpty()) ? defaultValue : field; } } - -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; -} - - -} 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 71cb158..f843d82 100644 --- a/backend/src/main/java/com/nttdata/calender/approval/Approval.java +++ b/backend/src/main/java/com/nttdata/calender/approval/Approval.java @@ -66,7 +66,7 @@ public class Approval { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } 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 f0a0dfb..7d7fa47 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -348,7 +348,7 @@ public class Change { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } } \ No newline at end of file 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 a247b75..93a4ef8 100644 --- a/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java +++ b/backend/src/main/java/com/nttdata/calender/implementer/Implementer.java @@ -68,7 +68,7 @@ public class Implementer { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } 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 675463b..026abec 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -237,7 +237,7 @@ public class Presets { private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } } 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 8f70847..cb6261f 100644 --- a/backend/src/main/java/com/nttdata/calender/states/StateChange.java +++ b/backend/src/main/java/com/nttdata/calender/states/StateChange.java @@ -60,7 +60,7 @@ public class StateChange { // Print out the field IDs and values for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } return remedyJavaAPI.createEntry(query); From e9f8780ca3a23c4866b1fb4d8e81c3bf327182ad Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Mon, 8 Jul 2024 17:43:47 +0200 Subject: [PATCH 14/15] changed return types for using entry id's interceptor --- .../calender/api/KalenderRestController.java | 21 +++-- .../nttdata/calender/api/RemedyJavaAPI.java | 6 +- .../calender/api/RequestInterceptor.java | 21 ++--- .../com/nttdata/calender/changes/Change.java | 8 +- .../com/nttdata/calender/presets/Presets.java | 89 ++++++++++--------- 5 files changed, 79 insertions(+), 66 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 ca710dd..37bf4d1 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -287,8 +287,9 @@ public class KalenderRestController { String formName = (request.getState() == 0) ? "ASF:WI_TAS_Paket" : "CHG:Infrastructure Change"; httpRequest.setAttribute("formName", formName); - change.modifyTimestamp(request); + var response = change.modifyTimestamp(request); httpRequest.setAttribute("listOfFieldValues", change.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return request; } @@ -314,6 +315,7 @@ public class KalenderRestController { String response = stateChange.createStateChange(request); httpRequest.setAttribute("listOfFieldValues", stateChange.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return ResponseEntity.ok(response); } @@ -336,6 +338,7 @@ public class KalenderRestController { var response = implementer.update(request); httpRequest.setAttribute("listOfFieldValues", implementer.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return ResponseEntity.ok(response); } @@ -359,6 +362,7 @@ public class KalenderRestController { var response = approval.update(request); httpRequest.setAttribute("listOfFieldValues", approval.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return ResponseEntity.ok(response); } @@ -387,8 +391,9 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); Presets presets = new Presets(javaAPI); - presets.savePreset(request); + var response = presets.savePreset(request); httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return presets.getAll(); } @@ -425,8 +430,9 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); Presets presets = new Presets(javaAPI); - presets.updatePreset(request); + var response = presets.updatePreset(request); httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return presets.getAll(); } @@ -440,8 +446,9 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); Presets presets = new Presets(javaAPI); - presets.deletePreset(request); + var response = presets.deletePreset(request); httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return presets.getAll(); } @@ -455,8 +462,9 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions"); Presets presets = new Presets(javaAPI); - presets.renamePreset(request); + var response = presets.renamePreset(request); httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues()); + httpRequest.setAttribute("entryId", response); return presets.getAll(); } @@ -470,7 +478,8 @@ public class KalenderRestController { httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences"); Presets presets = new Presets(javaAPI); - presets.editUserPreferences(request); + var response = presets.editUserPreferences(request); + httpRequest.setAttribute("entryId", response); } @CrossOrigin("*") diff --git a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java index 7b532eb..cebe13d 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java +++ b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java @@ -134,7 +134,8 @@ public class RemedyJavaAPI { return lastStatus.toString(); } - return "Entry created successfully. ID: " + entryIdOut; + // return "Entry created successfully. ID: " + entryIdOut; + return entryIdOut; } public String deleteEntry(String formName, String entryId) throws ARException { @@ -163,7 +164,7 @@ public class RemedyJavaAPI { * @param updates the updates * @throws ARException when an ARException occurs */ - public void modifyEntry(String entryId, Query updates) throws ARException { + public String modifyEntry(String entryId, Query updates) throws ARException { var values = updates.getFieldValues(); var entry = server.getEntry(updates.getFormName(), entryId, updates.getFieldIds()); @@ -171,6 +172,7 @@ public class RemedyJavaAPI { entry.put(value.getFieldId(), value.getValue()); }); server.setEntry(updates.getFormName(), entryId, entry, null, 0); + return entryId; } /** 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 cef177e..073000c 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -50,7 +50,8 @@ public class RequestInterceptor implements HandlerInterceptor { long transactionId = System.currentTimeMillis(); Object requestBody = request.getAttribute("requestBody"); - String formName = getValidatedField((String) request.getAttribute("formName"), "Default Form"); + String formName = getValidatedField((String) request.getAttribute("formName"), "‎"); + String entryId = getValidatedField((String) request.getAttribute("entryId"), "‎"); int status = (ex == null) ? 3 : 2; List listOfFieldValues = getFieldValues(request); @@ -64,30 +65,30 @@ public class RequestInterceptor implements HandlerInterceptor { entry = buildQueryEntry(transactionId, "Date change", formName, body.getChangeNr(), getAssignedTo(), status, body.getResourceId(), fieldValueJson); } else if (requestBody instanceof StateChangeRequest) { StateChangeRequest body = (StateChangeRequest) requestBody; - entry = buildQueryEntry(transactionId, "State transition", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "State transition", formName, body.getChangeNr(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof ImplementerUpdateRequest) { ImplementerUpdateRequest body = (ImplementerUpdateRequest) requestBody; - entry = buildQueryEntry(transactionId, "Implementer Update", formName, body.getPkgId(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Implementer Update", formName, body.getPkgId(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof ApprovalUpdateRequest) { ApprovalUpdateRequest body = (ApprovalUpdateRequest) requestBody; - entry = buildQueryEntry(transactionId, "Approval Update", formName, body.getChangeNr(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Approval Update", formName, body.getChangeNr(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof Preset) { Preset body = (Preset) requestBody; - entry = buildQueryEntry(transactionId, "Save Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Save Preset", formName, body.getId(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof SelectPresetRequest) { SelectPresetRequest body = (SelectPresetRequest) requestBody; - entry = buildQueryEntry(transactionId, "Select Preset", formName, body.getGuid(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Select Preset", formName, body.getGuid(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof UpdatePresetRequest) { UpdatePresetRequest body = (UpdatePresetRequest) requestBody; - entry = buildQueryEntry(transactionId, "Update Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Update Preset", formName, body.getId(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof DeletePresetRequest) { DeletePresetRequest body = (DeletePresetRequest) requestBody; - entry = buildQueryEntry(transactionId, "Delete Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Delete Preset", formName, body.getId(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof RenamePresetRequest) { RenamePresetRequest body = (RenamePresetRequest) requestBody; - entry = buildQueryEntry(transactionId, "Rename Preset", formName, body.getId(), getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Rename Preset", formName, body.getId(), getAssignedTo(), status, entryId, fieldValueJson); } else if (requestBody instanceof EditUserPreferencesRequest) { - entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, "?", fieldValueJson); + entry = buildQueryEntry(transactionId, "Edit User Preferences", formName, "", getAssignedTo(), status, entryId, fieldValueJson); } if (entry != null) { 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 7d7fa47..d87cd13 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -317,7 +317,7 @@ public class Change { * @throws ARException if an error occurs during the modification process * @throws ValidationError */ - public void modifyTimestamp(ChangeUpdateRequest request) throws ARException, ValidationError { + public String modifyTimestamp(ChangeUpdateRequest request) throws ARException, ValidationError { // Clear the list before processing a new request listOfFieldValues.clear(); @@ -331,8 +331,8 @@ public class Change { if (state == 0) { Query query = new Query.QueryBuilder("ASF:WI_TAS_Paket") .addFieldValue("d2", 1000000350, new Value(ts)).build(); - collectFieldValues(query); // Collect field values - api.modifyEntry(entryId, query); + collectFieldValues(query); // Collect field values + return api.modifyEntry(entryId, query); } else { Query queryInfrastructureChange = new Query.QueryBuilder("CHG:Infrastructure Change") .addFieldValue("d2", 1000000350, new Value(ts)).build(); @@ -342,7 +342,7 @@ public class Change { queryInfrastructureChange.getFieldIds(), queryInfrastructureChange.getFormName(), null, 0, 0); - api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange); + return api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange); } } 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 026abec..8dac690 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -117,58 +117,58 @@ 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(); - - api.createEntry(savePreference); - } + .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(); - public void savePreset(Preset request) throws ARException, NotFoundError { + api.createEntry(savePreference); + } + + public String 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); - } + return 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 { + public String updatePreset(UpdatePresetRequest request) throws ARException { listOfFieldValues.clear(); var queryPresets = new Query.QueryBuilder(formDefault) - .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); - - api.modifyEntry(preset.getEntryId(), queryPresets); - } + .addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build(); - public void renamePreset(RenamePresetRequest request) throws ARException { + collectFieldValues(queryPresets); // Collect field values + + var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", + queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); + + return api.modifyEntry(preset.getEntryId(), queryPresets); + } + + public String renamePreset(RenamePresetRequest request) throws ARException { listOfFieldValues.clear(); var queryPresets = new Query.QueryBuilder(formDefault) .addFieldValue("Name", 364000001, new Value(request.getNewName())).build(); @@ -176,10 +176,10 @@ public class Presets { queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); collectFieldValues(queryPresets); - api.modifyEntry(preset.getEntryId(), queryPresets); + return api.modifyEntry(preset.getEntryId(), queryPresets); } - public void editUserPreferences(EditUserPreferencesRequest request) throws ARException { + public String editUserPreferences(EditUserPreferencesRequest request) throws ARException { listOfFieldValues.clear(); var queryUserPreferences = new Query.QueryBuilder(formUserPref) .addFieldValue("Details", 364000002, new Value(request.getDetails())) @@ -187,15 +187,14 @@ public class Presets { .addFieldValue("Language", 364000004, new Value(request.getLanguage())) .build(); - collectFieldValues(queryUserPreferences); - + collectFieldValues(queryUserPreferences); var preferences = api .queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryUserPreferences.getFieldIds(), formUserPref, null, 0, 0) .get(0); - api.modifyEntry(preferences.getEntryId(), queryUserPreferences); + return api.modifyEntry(preferences.getEntryId(), queryUserPreferences); } public void allPresets() throws ARException, NotFoundError { @@ -219,10 +218,10 @@ public class Presets { } } - public void deletePreset(DeletePresetRequest request) throws ARException { + public String deletePreset(DeletePresetRequest request) throws ARException { var entries = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", null, formDefault, null, 0, 0) .get(0); - api.deleteEntry(formDefault, entries.getEntryId()); + var entryid = api.deleteEntry(formDefault, entries.getEntryId()); // SYSTEMDEFAULT var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), @@ -233,13 +232,15 @@ public class Presets { SelectPresetRequest spr = new SelectPresetRequest(); spr.setGuid(sysdefGUID); selectPreset(spr); + + return entryid; } private void collectFieldValues(Query query) { for (var entry : query.getFieldValues()) { - listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); + listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue()); } - } + } public List getAll() throws NotFoundError, ARException { allPresets(); From ae3c10ac8594799210cc08ddf2d29e9429aae6cc Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Mon, 8 Jul 2024 18:05:07 +0200 Subject: [PATCH 15/15] remove last comma if last entry --- .../calender/api/RequestInterceptor.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) 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 073000c..6dd62e2 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java +++ b/backend/src/main/java/com/nttdata/calender/api/RequestInterceptor.java @@ -106,21 +106,23 @@ public class RequestInterceptor implements HandlerInterceptor { } private String convertFieldValuesToJson(List fieldValues) { - if (fieldValues == null) { - return "‎"; + if (fieldValues == null || fieldValues.isEmpty()) { + return "{}"; } - - StringBuilder fieldValueString = new StringBuilder(); + + StringBuilder fieldValueString = new StringBuilder("{\n"); for (String field : fieldValues) { - fieldValueString.append("\"").append(field).append("\", \n"); + fieldValueString.append("\t\"").append(field).append("\",\n"); } - // Remove the last comma and space - if (fieldValueString.length() >= 1) { + // Remove the last comma and newline + if (fieldValueString.length() >= 2) { fieldValueString.setLength(fieldValueString.length() - 2); } - + + fieldValueString.append("\n}"); return fieldValueString.toString(); } + private Query buildQueryEntry(long transactionId, String actionType, String affectedForm, String changeNr, String assignedTo, int status, String requestId, String fieldValueJson) { return new Query.QueryBuilder(FORM_NAME)