116 lines
5.3 KiB
Java
116 lines
5.3 KiB
Java
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;
|
|
|
|
import com.bmc.arsys.api.ARException;
|
|
import com.bmc.arsys.api.Value;
|
|
import com.nttdata.calender.api.Query;
|
|
import com.nttdata.calender.api.RemedyJavaAPI;
|
|
|
|
/**
|
|
* The Implementer class is a Spring component responsible for handling
|
|
* implementer related
|
|
* operations, such as updating implementers and retrieving implementer
|
|
* information.
|
|
*/
|
|
@Service
|
|
public class Implementer {
|
|
private RemedyJavaAPI remedyJavaAPI;
|
|
private static final String formName = "ASF:WI_TAS_Paket";
|
|
private ArrayList<String> listOfFieldValues;
|
|
|
|
/**
|
|
* Initialization of the Implementer class with autowiring of RemedyJavaAPI.
|
|
*
|
|
* @param remedyJavaAPI RemedyJavaAPI instance
|
|
*/
|
|
@Autowired
|
|
public Implementer(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
|
|
}
|
|
|
|
/**
|
|
* Updates the implementer based on the ImplementerUpdateRequest.
|
|
*
|
|
* @param request ImplementerUpdateRequest object
|
|
* @return Entry creation result
|
|
* @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.
|
|
*
|
|
* @param request Specifies the change through the entryId
|
|
* @return ImplementerGetResponse containing the response
|
|
* @throws ARException when the entry is not found or there is no permission by
|
|
* the user
|
|
*/
|
|
// TODO: support group is not needed here - it's sufficient to have the entryId
|
|
// support group is retrieved through that
|
|
public ImplementerGetResponse get(ImplementerGetRequest request) throws ARException {
|
|
var query = new Query.QueryBuilder(formName)
|
|
.addFieldId("Company", 1000003228)
|
|
.addFieldId("SupportOrganization", 1000003227)
|
|
.addFieldId("SupportGroupName", 1000003229)
|
|
.build();
|
|
|
|
var assignmentInfos = remedyJavaAPI.getEntry(request.getEntryId(), query);
|
|
var qualAssoc = "(\'Company\' = \"" + assignmentInfos.get(query.getFieldId("Company")).toString()
|
|
+ "\" ) AND (\'Support Organization\' =\""
|
|
+ assignmentInfos.get(query.getFieldId("SupportOrganization")).toString()
|
|
+ "\" ) AND (\'Support Group Name\' = \""
|
|
+ assignmentInfos.get(query.getFieldId("SupportGroupName")).toString()
|
|
+ "\" ) AND (\'Status-SGP\' =\"Enabled\") AND (\'Status-SGA\' = \"Enabled\") AND (\'Assignment Availability\' = \"Yes\")";
|
|
var queryPerson = new Query.QueryBuilder("CTM:Support Group Assoc LookUp")
|
|
.addFieldId("PersonId", 1000000080)
|
|
.addFieldId("FullName", 1000000017)
|
|
.addFieldId("LoginId", 4)
|
|
.build();
|
|
|
|
var peopleInfos = remedyJavaAPI.queryFieldsById(qualAssoc, queryPerson.getFieldIds(),
|
|
queryPerson.getFormName(), null, 0, 0);
|
|
var response = new ImplementerGetResponse();
|
|
peopleInfos.stream().forEach(entry -> {
|
|
response.addMember(entry.get(queryPerson.getFieldId("FullName")).toString(),
|
|
entry.get(queryPerson.getFieldId("PersonId")).toString(),
|
|
entry.get(queryPerson.getFieldId("LoginId")).toString());
|
|
});
|
|
return response;
|
|
}
|
|
} |