Merge branch 'transaction'

main
Said Gedik 2024-07-24 15:46:26 +02:00
commit af8fcd2843
13 changed files with 446 additions and 140 deletions

View File

@ -1,3 +1,4 @@
{ {
"java.configuration.updateBuildConfiguration": "automatic" "java.configuration.updateBuildConfiguration": "automatic",
"java.compile.nullAnalysis.mode": "disabled"
} }

View File

@ -1,27 +1,33 @@
package com.nttdata.calender; package com.nttdata.calender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.nttdata.calender.api.RequestInterceptor;
import com.nttdata.calender.api.rsso.RssoInterceptor; import com.nttdata.calender.api.rsso.RssoInterceptor;
@Configuration @Configuration
public class WebMvcConfig implements WebMvcConfigurer { public class WebMvcConfig implements WebMvcConfigurer {
private final RssoInterceptor sessionInterceptor; private final RssoInterceptor sessionInterceptor;
private final RequestInterceptor requestInterceptor;
public WebMvcConfig(RssoInterceptor sessionInterceptor) { @Autowired
public WebMvcConfig(RssoInterceptor sessionInterceptor, RequestInterceptor requestInterceptor) {
this.sessionInterceptor = sessionInterceptor; 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. * @param registry the interceptor registry.
*/ */
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(sessionInterceptor); registry.addInterceptor(sessionInterceptor).addPathPatterns("/**");
registry.addInterceptor(requestInterceptor).addPathPatterns("/**");
} }
} }

View File

@ -3,6 +3,8 @@ package com.nttdata.calender.api;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.checkerframework.common.util.report.qual.ReportCall; import org.checkerframework.common.util.report.qual.ReportCall;
@ -116,19 +118,27 @@ public class KalenderRestController {
* @throws ARException * @throws ARException
* @throws JsonProcessingException if an exception occurs during JSON processing * @throws JsonProcessingException if an exception occurs during JSON processing
*/ */
@CrossOrigin("*") @CrossOrigin("*")
@GetMapping("/api/getUser") @GetMapping("/api/getUser")
@ResponseBody @ResponseBody
public String getUserId() throws ARException { public ResponseEntity<String> getUserId() throws ARException {
var query = new Query.QueryBuilder("CTM:People LookUp") var query = new Query.QueryBuilder("CTM:People LookUp")
.addFieldId("Name", 1000000017) .addFieldId("Name", 1000000017)
.build(); .build();
var name = this.javaAPI.queryFieldsById("\'4\'==\"" + javaAPI.getUser() + "\"", query.getFieldIds(), var results = this.javaAPI.queryFieldsById("'4'==\"" + javaAPI.getUser() + "\"", query.getFieldIds(),
query.getFormName(), null, 0, 0).get(0); 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")) + "\"}"; String jsonString = "{\"userId\": \"" + name.get(query.getFieldId("Name")) + "\"}";
return jsonString; return ResponseEntity.ok(jsonString);
} }
/** /**
@ -208,7 +218,7 @@ public class KalenderRestController {
@ResponseBody @ResponseBody
public ArrayList<ContractGetResponse> getContracts() throws ARException, NotFoundError { public ArrayList<ContractGetResponse> getContracts() throws ARException, NotFoundError {
Contract contract = new Contract(); Contract contract = new Contract();
System.out.println(javaAPI.getUser()); // System.out.println(javaAPI.getUser());
return contract.get(this.javaAPI); return contract.get(this.javaAPI);
} }
@ -270,9 +280,17 @@ public class KalenderRestController {
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("/api/updateChange") @PostMapping("/api/updateChange")
@ResponseBody @ResponseBody
public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request) public ChangeUpdateRequest updateChange(@RequestBody ChangeUpdateRequest request, HttpServletRequest httpRequest)
throws ARException, ValidationError { throws ARException, ValidationError {
change.modifyTimestamp(request); httpRequest.setAttribute("requestBody", request);
String formName = (request.getState() == 0) ? "ASF:WI_TAS_Paket" : "CHG:Infrastructure Change";
httpRequest.setAttribute("formName", formName);
var response = change.modifyTimestamp(request);
httpRequest.setAttribute("listOfFieldValues", change.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return request; return request;
} }
@ -289,9 +307,16 @@ public class KalenderRestController {
*/ */
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("/api/updateState") @PostMapping("/api/updateState")
public ResponseEntity<String> updateState(@RequestBody StateChangeRequest request) throws ARException { public ResponseEntity<String> updateState(@RequestBody StateChangeRequest request, HttpServletRequest httpRequest)
throws ARException {
logRequest("/updateState", request.toString()); logRequest("/updateState", request.toString());
var response = stateChange.createStateChange(request); httpRequest.setAttribute("requestBody", request);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions");
String response = stateChange.createStateChange(request);
httpRequest.setAttribute("listOfFieldValues", stateChange.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
@ -306,8 +331,15 @@ public class KalenderRestController {
*/ */
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("api/updateImplementer") @PostMapping("api/updateImplementer")
public ResponseEntity<String> updateImplementer(@RequestBody ImplementerUpdateRequest request) throws ARException { public ResponseEntity<String> updateImplementer(@RequestBody ImplementerUpdateRequest request,
HttpServletRequest httpRequest) throws ARException {
httpRequest.setAttribute("requestBody", request);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions");
var response = implementer.update(request); var response = implementer.update(request);
httpRequest.setAttribute("listOfFieldValues", implementer.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
@ -323,8 +355,15 @@ public class KalenderRestController {
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("api/updateApproval") @PostMapping("api/updateApproval")
@ResponseBody @ResponseBody
public ResponseEntity<String> updateApproval(@RequestBody ApprovalUpdateRequest request) throws ARException { public ResponseEntity<String> updateApproval(@RequestBody ApprovalUpdateRequest request,
HttpServletRequest httpRequest) throws ARException {
httpRequest.setAttribute("requestBody", request);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_Interactions");
var response = approval.update(request); var response = approval.update(request);
httpRequest.setAttribute("listOfFieldValues", approval.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
@ -346,20 +385,32 @@ public class KalenderRestController {
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("/api/savePreset") @PostMapping("/api/savePreset")
@ResponseBody @ResponseBody
public List<Preset> savePreset(@RequestBody Preset request) public List<Preset> savePreset(@RequestBody Preset request, HttpServletRequest httpRequest)
throws ARException, ValidationError, NotFoundError { throws ARException, ValidationError, NotFoundError {
httpRequest.setAttribute("requestBody", request);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_FilterDefinitions");
Presets presets = new Presets(javaAPI); 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(); return presets.getAll();
} }
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("/api/selectPreset") @PostMapping("/api/selectPreset")
@ResponseBody @ResponseBody
public boolean selectPreset(@RequestBody SelectPresetRequest guid) throws ARException, public boolean selectPreset(@RequestBody SelectPresetRequest guid, HttpServletRequest httpRequest)
NotFoundError { throws ARException, NotFoundError {
httpRequest.setAttribute("requestBody", guid);
httpRequest.setAttribute("formName", "ASF:CHG_CAL_UserPreferences");
Presets presets = new Presets(javaAPI); Presets presets = new Presets(javaAPI);
return presets.selectPreset(guid); boolean result = presets.selectPreset(guid);
httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues());
return result;
} }
@CrossOrigin("*") @CrossOrigin("*")
@ -373,36 +424,62 @@ public class KalenderRestController {
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("api/updatePreset") @PostMapping("api/updatePreset")
@ResponseBody @ResponseBody
public List<Preset> updatePreset(@RequestBody UpdatePresetRequest request) throws NotFoundError, ARException { public List<Preset> 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 presets = new Presets(javaAPI);
presets.updatePreset(request); var response = presets.updatePreset(request);
httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return presets.getAll(); return presets.getAll();
} }
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("api/deletePreset") @PostMapping("api/deletePreset")
@ResponseBody @ResponseBody
public Object deletePreset(@RequestBody DeletePresetRequest request) throws ARException, NotFoundError { 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 presets = new Presets(javaAPI);
presets.deletePreset(request); var response = presets.deletePreset(request);
httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return presets.getAll(); return presets.getAll();
} }
@CrossOrigin @CrossOrigin
@PostMapping("api/renamePreset") @PostMapping("api/renamePreset")
@ResponseBody @ResponseBody
public List<Preset> renamePreset(@RequestBody RenamePresetRequest request) throws NotFoundError, ARException { public List<Preset> 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 presets = new Presets(javaAPI);
presets.renamePreset(request); var response = presets.renamePreset(request);
httpRequest.setAttribute("listOfFieldValues", presets.getListOfFieldValues());
httpRequest.setAttribute("entryId", response);
return presets.getAll(); return presets.getAll();
} }
@CrossOrigin("*") @CrossOrigin("*")
@PostMapping("api/editUserPreferences") @PostMapping("api/editUserPreferences")
@ResponseBody @ResponseBody
public void editUserPreferences(@RequestBody EditUserPreferencesRequest request) throws ARException, NotFoundError { 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 presets = new Presets(javaAPI);
presets.editUserPreferences(request); var response = presets.editUserPreferences(request);
httpRequest.setAttribute("entryId", response);
} }
@CrossOrigin("*") @CrossOrigin("*")

View File

@ -134,7 +134,8 @@ public class RemedyJavaAPI {
return lastStatus.toString(); 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 { public String deleteEntry(String formName, String entryId) throws ARException {
@ -163,7 +164,7 @@ public class RemedyJavaAPI {
* @param updates the updates * @param updates the updates
* @throws ARException when an ARException occurs * @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 values = updates.getFieldValues();
var entry = server.getEntry(updates.getFormName(), entryId, updates.getFieldIds()); var entry = server.getEntry(updates.getFormName(), entryId, updates.getFieldIds());
@ -171,6 +172,7 @@ public class RemedyJavaAPI {
entry.put(value.getFieldId(), value.getValue()); entry.put(value.getFieldId(), value.getValue());
}); });
server.setEntry(updates.getFormName(), entryId, entry, null, 0); server.setEntry(updates.getFormName(), entryId, entry, null, 0);
return entryId;
} }
/** /**

View File

@ -0,0 +1,147 @@
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.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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bmc.arsys.api.Value;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Component
public class RequestInterceptor implements HandlerInterceptor {
private RemedyJavaAPI api;
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 {
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());
logger.info(out);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
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"), "");
String entryId = getValidatedField((String) request.getAttribute("entryId"), "");
int status = (ex == null) ? 3 : 2;
List<String> 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, entryId, fieldValueJson);
} else if (requestBody instanceof ImplementerUpdateRequest) {
ImplementerUpdateRequest body = (ImplementerUpdateRequest) requestBody;
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, entryId, fieldValueJson);
} else if (requestBody instanceof Preset) {
Preset body = (Preset) requestBody;
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, entryId, fieldValueJson);
} else if (requestBody instanceof UpdatePresetRequest) {
UpdatePresetRequest body = (UpdatePresetRequest) requestBody;
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, entryId, fieldValueJson);
} else if (requestBody instanceof RenamePresetRequest) {
RenamePresetRequest body = (RenamePresetRequest) requestBody;
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, entryId, fieldValueJson);
}
if (entry != null) {
api.createEntry(entry);
}
}
if (ex != null) {
logger.error("Exception occurred during afterCompletion: ", ex);
}
}
private List<String> getFieldValues(HttpServletRequest request) {
return (List<String>) request.getAttribute("listOfFieldValues");
}
private String convertFieldValuesToJson(List<String> fieldValues) {
if (fieldValues == null || fieldValues.isEmpty()) {
return "{}";
}
StringBuilder fieldValueString = new StringBuilder("{\n");
for (String field : fieldValues) {
fieldValueString.append("\t\"").append(field).append("\",\n");
}
// 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)
.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();
}
private String getAssignedTo() {
return getValidatedField(api.getUser(), "");
}
private String getValidatedField(String field, String defaultValue) {
return (field == null || field.isEmpty()) ? defaultValue : field;
}
}

View File

@ -1,5 +1,8 @@
package com.nttdata.calender.approval; package com.nttdata.calender.approval;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.bmc.arsys.api.ARException; import com.bmc.arsys.api.ARException;
@ -13,6 +16,8 @@ import com.nttdata.calender.api.RemedyJavaAPI;
@Service @Service
public class Approval { public class Approval {
private RemedyJavaAPI remedyJavaAPI; private RemedyJavaAPI remedyJavaAPI;
private ArrayList<String> listOfFieldValues;
/** /**
* Constructor for the Approval class. * Constructor for the Approval class.
@ -21,6 +26,17 @@ public class Approval {
*/ */
public Approval(RemedyJavaAPI remedyJavaAPI) { public Approval(RemedyJavaAPI remedyJavaAPI) {
this.remedyJavaAPI = remedyJavaAPI; this.remedyJavaAPI = remedyJavaAPI;
this.listOfFieldValues = new ArrayList<>();
}
/**
* Returns the list of field values.
*
* @return listOfFieldValues
*/
public List<String> 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 * @throws ARException If an error occurs during the update
*/ */
public String update(ApprovalUpdateRequest request) throws ARException { public String update(ApprovalUpdateRequest request) throws ARException {
// Clear the list before processing a new request
listOfFieldValues.clear();
remedyJavaAPI.impersonateUser("WuiQualityKV"); remedyJavaAPI.impersonateUser("WuiQualityKV");
String action = "APPROVAL"; String action = "APPROVAL";
@ -40,46 +59,18 @@ public class Approval {
.addFieldValue("ApprovalAction", 1000003264, request.getApprovalActionValue()) .addFieldValue("ApprovalAction", 1000003264, request.getApprovalActionValue())
.build(); .build();
/* collectFieldValues(queryUpdate); // Collect field values
* 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)";
* }
*/
return this.remedyJavaAPI.createEntry(queryUpdate); 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. * Checks if a user is in the approval list for a specific change.
* *

View File

@ -4,6 +4,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.TimeZone; import java.util.TimeZone;
@ -32,6 +33,7 @@ public class Change {
private Query queryChange; private Query queryChange;
private RemedyJavaAPI api; private RemedyJavaAPI api;
private final static String formName = "ASF:WI_TAS_Paket"; private final static String formName = "ASF:WI_TAS_Paket";
private ArrayList<String> listOfFieldValues;
/** /**
* Constructor for the {@link Change} class which gets autowired with the * Constructor for the {@link Change} class which gets autowired with the
@ -72,6 +74,17 @@ public class Change {
.addFieldId("CurrentStageNumber", 301541700) .addFieldId("CurrentStageNumber", 301541700)
.addFieldId("Plantime", 666000001) .addFieldId("Plantime", 666000001)
.build(); .build();
this.listOfFieldValues = new ArrayList<>();
}
/**
* Returns the list of field values.
*
* @return listOfFieldValues
*/
public List<String> getListOfFieldValues() {
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
} }
/** /**
@ -87,21 +100,16 @@ public class Change {
* @throws ValidationError if there is an invalid filter or qualification * @throws ValidationError if there is an invalid filter or qualification
*/ */
public ChangeResponse get(ChangeRequest request) throws ARException, NotFoundError, ValidationError { public ChangeResponse get(ChangeRequest request) throws ARException, NotFoundError, ValidationError {
LoggerTemplates log = new LoggerTemplates(api); LoggerTemplates log = new LoggerTemplates(api);
var peopleFullName = processPeopleInfo(request); var peopleFullName = processPeopleInfo(request);
var filter = request.getFilter(); var filter = request.getFilter();
for (var v : filter.getFilterElement()) {
System.out.println(v.getFilter() + ", " + v.getColumn() +", " + v.getCriteria());
}
var qualifier = filter.constructQualifier(queryChange, api); var qualifier = filter.constructQualifier(queryChange, api);
SortInfo sort = request.constructSortInfo(queryChange); SortInfo sort = request.constructSortInfo(queryChange);
log.initLog("getChanges", api.getUser()); // Logging log.initLog("getChanges", api.getUser()); // Logging
System.out.println(qualifier);
var entries = api.queryFieldsById(qualifier, this.queryChange.getFieldIds(), var entries = api.queryFieldsById(qualifier, this.queryChange.getFieldIds(),
this.queryChange.getFormName(), this.queryChange.getFormName(),
sort, request.getSliceStart(), sort, request.getSliceStart(),
@ -143,33 +151,33 @@ public class Change {
change.setChangeNr(getValueStringByID(entry, "ChangeNr")); change.setChangeNr(getValueStringByID(entry, "ChangeNr"));
change.setSupportGroup(getValueStringByID(entry, "SupportGroup")); change.setSupportGroup(getValueStringByID(entry, "SupportGroup"));
change.setStatusReason(getValueStringByID(entry, "StatusReason")); 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(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 10){ || Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
if(change.getStatusReason().equals("9000")){ .orElse(-1) == 9) {
if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
.orElse(-1) == 10) {
if (change.getStatusReason().equals("9000")) {
change.setState(10); change.setState(10);
}else{ } else {
change.setState(101); change.setState(101);
} }
} }
if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
System.out.println("\n++++++++"+getValueStringByID(entry, "CurrentStageNumber")); .orElse(-1) == 9) {
if(getValueStringByID(entry, "CurrentStageNumber").equals("1")){ if (getValueStringByID(entry, "CurrentStageNumber").equals("1")) {
change.setState(9); change.setState(9);
}else{ } else {
change.setState(91); change.setState(91);
} }
} }
}else{ } else {
change.setState(Optional.ofNullable(getValue(entry, "State")) change.setState(Optional.ofNullable(getValue(entry, "State"))
.map(Value::getIntValue) .map(Value::getIntValue)
.orElse(-1)); .orElse(-1));
} }
System.out.println("\nStatus: "+change.getState());
change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId"));
change.setResourceName(getValueStringByID(entry, "ResourceName")); change.setResourceName(getValueStringByID(entry, "ResourceName"));
change.setD1(timestampToDateById(entry, "D1")); change.setD1(timestampToDateById(entry, "D1"));
change.setD2(timestampToDateById(entry, "D2")); change.setD2(timestampToDateById(entry, "D2"));
@ -198,8 +206,6 @@ public class Change {
change.setPlanTime(convertPlanTime(ptHours, ptMinutes)); change.setPlanTime(convertPlanTime(ptHours, ptMinutes));
changes.add(change); changes.add(change);
} }
System.out.println(entries.size());
api.freeImpersonatedUser(); api.freeImpersonatedUser();
return new ChangeResponse(entriesSize, changes); return new ChangeResponse(entriesSize, changes);
@ -214,7 +220,7 @@ public class Change {
* @return the full name of the impersonated user * @return the full name of the impersonated user
* @throws ARException if an AR exception occurs * @throws ARException if an AR exception occurs
* @throws NotFoundError if no user or support groups are found with the * @throws NotFoundError if no user or support groups are found with the
* provided login ID * provi1ded login ID
*/ */
private String processPeopleInfo(ChangeRequest request) throws ARException, NotFoundError { private String processPeopleInfo(ChangeRequest request) throws ARException, NotFoundError {
// Queries for SupportGroup of impersonated User // Queries for SupportGroup of impersonated User
@ -222,6 +228,8 @@ public class Change {
.addFieldId("FullName", 1000000017) .addFieldId("FullName", 1000000017)
.addFieldId("SupportGroupId", 1000000079) .addFieldId("SupportGroupId", 1000000079)
.build(); .build();
System.out.println(api.getUser());
var peopleInfos = api.queryFieldsById("\'Login ID\' = \"" + api.getUser() + "\"", var peopleInfos = api.queryFieldsById("\'Login ID\' = \"" + api.getUser() + "\"",
queryPerson.getFieldIds(), queryPerson.getFieldIds(),
queryPerson.getFormName(), null, 0, 0); queryPerson.getFormName(), null, 0, 0);
@ -255,7 +263,6 @@ public class Change {
return totalHours; return totalHours;
} }
/** /**
* Returns the {@link Value} of an entry based on the provided description. * Returns the {@link Value} of an entry based on the provided description.
* *
@ -310,7 +317,10 @@ public class Change {
* @throws ARException if an error occurs during the modification process * @throws ARException if an error occurs during the modification process
* @throws ValidationError * @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();
String entryId = request.getResourceId(); String entryId = request.getResourceId();
String d2 = request.getD2(); String d2 = request.getD2();
var dateConverter = new DateConverter(); var dateConverter = new DateConverter();
@ -319,19 +329,26 @@ public class Change {
var ts = dateConverter.convertTimestamp(d2); var ts = dateConverter.convertTimestamp(d2);
if (state == 0) { if (state == 0) {
Query query = new Query.QueryBuilder("ASF:WI_TAS_Paket") Query query = new Query.QueryBuilder("ASF:WI_TAS_Paket")
.addFieldValue("d2", 1000000350, new Value(ts)).build(); .addFieldValue("d2", 1000000350, new Value(ts)).build();
api.modifyEntry(entryId, query); collectFieldValues(query); // Collect field values
return api.modifyEntry(entryId, query);
} else { } else {
Query queryInfrastructureChange = new Query.QueryBuilder("CHG:Infrastructure Change") Query queryInfrastructureChange = new Query.QueryBuilder("CHG:Infrastructure Change")
.addFieldValue("d2", 1000000350, new Value(ts)).build(); .addFieldValue("d2", 1000000350, new Value(ts)).build();
collectFieldValues(queryInfrastructureChange); // Collect field values
var change = api.queryFieldsById("\'Infrastructure Change ID\' = \"" + changeNr + "\"", var change = api.queryFieldsById("\'Infrastructure Change ID\' = \"" + changeNr + "\"",
queryInfrastructureChange.getFieldIds(), queryInfrastructureChange.getFieldIds(),
queryInfrastructureChange.getFormName(), null, 0, 0); queryInfrastructureChange.getFormName(), null, 0, 0);
api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange); return api.modifyEntry(change.get(0).getEntryId(), queryInfrastructureChange);
} }
}
} private void collectFieldValues(Query query) {
for (var entry : query.getFieldValues()) {
listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue());
}
}
} }

View File

@ -103,8 +103,6 @@ public class Filter {
var column = current_filter.getColumn(); var column = current_filter.getColumn();
var criterias = current_filter.getCriteria(); var criterias = current_filter.getCriteria();
System.out.println(current_filter + " | ");
if (column.isEmpty() || criterias.length <= 0) { if (column.isEmpty() || criterias.length <= 0) {
throw new ValidationError("Fields inside filter empty"); throw new ValidationError("Fields inside filter empty");
} }

View File

@ -24,7 +24,6 @@ public class Contract {
this.contracts = new ArrayList<ContractGetResponse>(); this.contracts = new ArrayList<ContractGetResponse>();
} }
/** /**
* Queries the Remedy AR Server using the provided `api` object to retrieve * Queries the Remedy AR Server using the provided `api` object to retrieve
* Contract IDs * Contract IDs
@ -40,15 +39,13 @@ public class Contract {
public ArrayList<ContractGetResponse> queryContracts(RemedyJavaAPI api) throws ARException, NotFoundError { public ArrayList<ContractGetResponse> queryContracts(RemedyJavaAPI api) throws ARException, NotFoundError {
ArrayList<ContractGetResponse> allContracts = new ArrayList<ContractGetResponse>(); ArrayList<ContractGetResponse> allContracts = new ArrayList<ContractGetResponse>();
var queryContracts = new Query.QueryBuilder(formName_contracts) var queryContracts = new Query.QueryBuilder(formName_contracts)
.addFieldId("Id", 179) .addFieldId("Id", 179)
.addFieldId("Name", 700008020).build(); .addFieldId("Name", 700008020).build();
System.out.println("\n### USER: "+api.getUser());
allContracts = api allContracts = api
.queryFieldsById("\'4\' = \""+api.getUser()+"\"", queryContracts.getFieldIds(), formName_contracts, null, .queryFieldsById("\'4\' = \"" + api.getUser() + "\"", queryContracts.getFieldIds(), formName_contracts,
null,
0, 0) 0, 0)
.stream() .stream()
.map(entry -> new ContractGetResponse( .map(entry -> new ContractGetResponse(
@ -57,14 +54,8 @@ public class Contract {
.distinct() .distinct()
.collect(Collectors.toCollection(ArrayList::new)); .collect(Collectors.toCollection(ArrayList::new));
for (ContractGetResponse contractGetResponse : allContracts) {
System.out.println(contractGetResponse.name);
}
if (allContracts.isEmpty()) { if (allContracts.isEmpty()) {
System.out.println("No contracts found in this context"); System.out.println("No contracts found in this context");
} }
return allContracts; return allContracts;
} }

View File

@ -1,5 +1,8 @@
package com.nttdata.calender.implementer; package com.nttdata.calender.implementer;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,6 +21,7 @@ import com.nttdata.calender.api.RemedyJavaAPI;
public class Implementer { public class Implementer {
private RemedyJavaAPI remedyJavaAPI; private RemedyJavaAPI remedyJavaAPI;
private static final String formName = "ASF:WI_TAS_Paket"; private static final String formName = "ASF:WI_TAS_Paket";
private ArrayList<String> listOfFieldValues;
/** /**
* Initialization of the Implementer class with autowiring of RemedyJavaAPI. * Initialization of the Implementer class with autowiring of RemedyJavaAPI.
@ -27,6 +31,16 @@ public class Implementer {
@Autowired @Autowired
public Implementer(RemedyJavaAPI remedyJavaAPI) { public Implementer(RemedyJavaAPI remedyJavaAPI) {
this.remedyJavaAPI = remedyJavaAPI; this.remedyJavaAPI = remedyJavaAPI;
this.listOfFieldValues = new ArrayList<>();
}
/**
* Returns the list of field values.
*
* @return listOfFieldValues
*/
public List<String> getListOfFieldValues() {
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
} }
/** /**
@ -37,15 +51,27 @@ public class Implementer {
* @throws ARException if an ARException occurs * @throws ARException if an ARException occurs
*/ */
public String update(ImplementerUpdateRequest request) throws ARException { public String update(ImplementerUpdateRequest request) throws ARException {
// Clear the list before processing a new request
listOfFieldValues.clear();
var action = "SETCHGIMPLEMENTER"; var action = "SETCHGIMPLEMENTER";
var queryUpdate = new Query.QueryBuilder("ASF:CHG_CAL_Interactions") var queryUpdate = new Query.QueryBuilder("ASF:CHG_CAL_Interactions")
.addFieldValue("ChangeNr", 666000002, request.getPkgIdValue()) .addFieldValue("ChangeNr", 666000002, request.getPkgIdValue())
.addFieldValue("Action", 666000001, new Value(action)) .addFieldValue("Action", 666000001, new Value(action))
.addFieldValue("LoginId", 666000005, request.getLoginIdValue()) .addFieldValue("LoginId", 666000005, request.getLoginIdValue())
.build(); .build();
collectFieldValues(queryUpdate); // Collect field values
return this.remedyJavaAPI.createEntry(queryUpdate); 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 * Retrieves all the implementers that are part of the support group of a
* specific change. * specific change.

View File

@ -21,6 +21,7 @@ public class Presets {
private Query prefQuery; private Query prefQuery;
private RemedyJavaAPI api; private RemedyJavaAPI api;
private List<Preset> presets; private List<Preset> presets;
private ArrayList<String> listOfFieldValues;
@Autowired @Autowired
public Presets(RemedyJavaAPI api) throws ARException, NotFoundError { public Presets(RemedyJavaAPI api) throws ARException, NotFoundError {
@ -55,9 +56,20 @@ public class Presets {
.build(); .build();
this.presets = new ArrayList<>(); this.presets = new ArrayList<>();
this.listOfFieldValues = new ArrayList<>();
api.impersonateUser("WuiQualityKV"); api.impersonateUser("WuiQualityKV");
} }
/**
* Returns the list of field values.
*
* @return listOfFieldValues
*/
public List<String> getListOfFieldValues() {
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
}
public Object initPresets() throws ARException, NotFoundError { public Object initPresets() throws ARException, NotFoundError {
PresetsGetResponse response = new PresetsGetResponse(); PresetsGetResponse response = new PresetsGetResponse();
@ -76,7 +88,6 @@ public class Presets {
var guid = preference.get(0).get(prefQuery.getFieldId("GUID")); var guid = preference.get(0).get(prefQuery.getFieldId("GUID"));
if (guid.toString() == null) { if (guid.toString() == null) {
// IF GUID IS NULL PUT SYSTEM DEFAULT INSIDE // IF GUID IS NULL PUT SYSTEM DEFAULT INSIDE
System.out.println("GEHT REIN");
var queryPreferenceNewValue = new Query.QueryBuilder(formUserPref) var queryPreferenceNewValue = new Query.QueryBuilder(formUserPref)
.addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build(); .addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build();
var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"",
@ -115,19 +126,24 @@ public class Presets {
api.createEntry(savePreference); api.createEntry(savePreference);
} }
public void savePreset(Preset request) throws ARException, NotFoundError { public String savePreset(Preset request) throws ARException, NotFoundError {
listOfFieldValues.clear();
var saveQuery = new Query.QueryBuilder(formDefault) var saveQuery = new Query.QueryBuilder(formDefault)
.addFieldValue("FilterPresetName", 364000001, new Value(request.getName())) .addFieldValue("FilterPresetName", 364000001, new Value(request.getName()))
.addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition())) .addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition()))
.build(); .build();
api.createEntry(saveQuery); collectFieldValues(saveQuery); // Collect field values
return api.createEntry(saveQuery);
} }
public boolean selectPreset(SelectPresetRequest guid) throws ARException { public boolean selectPreset(SelectPresetRequest guid) throws ARException {
listOfFieldValues.clear();
var queryP = new Query.QueryBuilder(formUserPref) 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, var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryP.getFieldIds(), formUserPref,
null, 0, null, 0,
0); 0);
@ -139,41 +155,51 @@ public class Presets {
return true; return true;
} }
public void updatePreset(UpdatePresetRequest request) throws ARException { public String updatePreset(UpdatePresetRequest request) throws ARException {
listOfFieldValues.clear();
var queryPresets = new Query.QueryBuilder(formDefault) 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() + "\"", 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); return api.modifyEntry(preset.getEntryId(), queryPresets);
} }
public void renamePreset(RenamePresetRequest request) throws ARException { public String renamePreset(RenamePresetRequest request) throws ARException {
listOfFieldValues.clear();
var queryPresets = new Query.QueryBuilder(formDefault) var queryPresets = new Query.QueryBuilder(formDefault)
.addFieldValue("Name", 364000001, new Value(request.getNewName())).build(); .addFieldValue("Name", 364000001, new Value(request.getNewName())).build();
var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", 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); collectFieldValues(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) var queryUserPreferences = new Query.QueryBuilder(formUserPref)
.addFieldValue("Details", 364000002, new Value(request.getDetails())) .addFieldValue("Details", 364000002, new Value(request.getDetails()))
.addFieldValue("View", 364000003, new Value(request.getView())) .addFieldValue("View", 364000003, new Value(request.getView()))
.addFieldValue("Language", 364000004, new Value(request.getLanguage())) .addFieldValue("Language", 364000004, new Value(request.getLanguage()))
.build(); .build();
collectFieldValues(queryUserPreferences);
var preferences = api var preferences = api
.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryUserPreferences.getFieldIds(), .queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryUserPreferences.getFieldIds(),
formUserPref, null, 0, 0) formUserPref, null, 0, 0)
.get(0); .get(0);
api.modifyEntry(preferences.getEntryId(), queryUserPreferences); return api.modifyEntry(preferences.getEntryId(), queryUserPreferences);
} }
public void allPresets() throws ARException, NotFoundError { 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(), defQuery.getFieldIds(),
formDefault, formDefault,
null, 0, null, 0,
@ -192,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) var entries = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", null, formDefault, null, 0, 0)
.get(0); .get(0);
api.deleteEntry(formDefault, entries.getEntryId()); var entryid = api.deleteEntry(formDefault, entries.getEntryId());
// SYSTEMDEFAULT // SYSTEMDEFAULT
var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(),
@ -206,6 +232,14 @@ public class Presets {
SelectPresetRequest spr = new SelectPresetRequest(); SelectPresetRequest spr = new SelectPresetRequest();
spr.setGuid(sysdefGUID); spr.setGuid(sysdefGUID);
selectPreset(spr); selectPreset(spr);
return entryid;
}
private void collectFieldValues(Query query) {
for (var entry : query.getFieldValues()) {
listOfFieldValues.add(entry.getFieldId() + "\": \"" + entry.getValue());
}
} }
public List<Preset> getAll() throws NotFoundError, ARException { public List<Preset> getAll() throws NotFoundError, ARException {

View File

@ -114,7 +114,7 @@ public class State {
populateStateInfo(stateFields, stateStatusFields, configurationQuery, configurationStatusQuery); populateStateInfo(stateFields, stateStatusFields, configurationQuery, configurationStatusQuery);
// Print state information // Print state information
printStateInfo(); // printStateInfo();
} }
private void populateStateInfo(List<Entry> stateFields, List<Entry> stateStatusFields, private void populateStateInfo(List<Entry> stateFields, List<Entry> stateStatusFields,
@ -135,7 +135,7 @@ public class State {
implementerFlag = stateField.get(configurationQuery.getFieldId("implementerFlag")).toString() implementerFlag = stateField.get(configurationQuery.getFieldId("implementerFlag")).toString()
.equals("SETIMPLEMENTER_YES"); .equals("SETIMPLEMENTER_YES");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
} }
String engName = stateField.get(configurationQuery.getFieldId("engName")).toString(); String engName = stateField.get(configurationQuery.getFieldId("engName")).toString();

View File

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