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 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 getListOfFieldValues() { return new ArrayList<>(listOfFieldValues); // Return a copy to ensure immutability } }