74 lines
2.5 KiB
Java
74 lines
2.5 KiB
Java
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;
|
|
|
|
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 StateChange class is a Spring Component responsible for creating state
|
|
* change entries on Remedy. It handles the logic of creating a new
|
|
* entry with the required field values.
|
|
*/
|
|
@Service
|
|
public class StateChange {
|
|
static final String formName = "ASF:CHG_CAL_Interactions";
|
|
private RemedyJavaAPI remedyJavaAPI;
|
|
ArrayList<String> listOfFieldValues;
|
|
|
|
/**
|
|
* Initializes the StateChange class with a RemedyJavaAPI instance.
|
|
*
|
|
* @param remedyJavaAPI RemedyJavaAPI instance
|
|
*/
|
|
@Autowired
|
|
public StateChange(RemedyJavaAPI remedyJavaAPI) {
|
|
this.remedyJavaAPI = remedyJavaAPI;
|
|
listOfFieldValues = new ArrayList<>();
|
|
}
|
|
|
|
/**
|
|
* Creates a new state change entry in the RemedyJavaAPI with the given
|
|
* request data.
|
|
*
|
|
* @param request a StateChangeRequest object containing the required
|
|
* information
|
|
* for creating a new state change entry
|
|
* @return String representing the created entry ID
|
|
* @throws ARException when there's an error creating the entry
|
|
*/
|
|
public String createStateChange(StateChangeRequest request) throws ARException {
|
|
listOfFieldValues.clear();
|
|
|
|
String ACTION = "STATUSCHANGE";
|
|
|
|
if (request.getCurrentState() == 9 && request.getNextState() == 1)
|
|
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()))
|
|
.build();
|
|
|
|
// Print out the field IDs and values
|
|
for (var entry : query.getFieldValues()) {
|
|
listOfFieldValues.add(entry.getFieldId() + ": " + entry.getValue());
|
|
}
|
|
|
|
return remedyJavaAPI.createEntry(query);
|
|
}
|
|
|
|
public List<String> getListOfFieldValues() {
|
|
return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability
|
|
}
|
|
|
|
}
|