ChangeCalendar/backend/src/main/java/com/nttdata/calender/states/StateChange.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
}
}