package org.opennaas.extensions.roadm.wonesys.commandsets;
import java.util.List;
import java.util.Vector;
import org.opennaas.core.resources.command.Response;
public class WonesysResponse extends Response {
private WonesysMessage wonesysResponseMessage = null;
public WonesysResponse(Object cmdQuery, Object rawResponse) {
// set sent msg
String query = (String) cmdQuery;
setSentMessage(query);
// set wonesysResponseMessage
String response = (String) rawResponse;
try {
wonesysResponseMessage = new WonesysMessage(response);
} catch (Exception e) {
// wonesysMessage creation failed
wonesysResponseMessage = null;
getErrors().add("Invalid response message. " + e.getMessage());
}
if (wonesysResponseMessage != null) {
// set errors
fillErrors(wonesysResponseMessage);
// set info
String data = wonesysResponseMessage.getData();
setInformation(data);
}
// set status
// Status.WAIT is not to be used here,
// as wonesys respond only when a command has finished.
if (getErrors().size() > 0)
setStatus(Status.ERROR);
else
setStatus(Status.OK);
}
public WonesysMessage getWonesysResponseMessage() {
return wonesysResponseMessage;
}
/**
* Fills this Response errors list with errors contained in wonesysMessage (if any). If no errors are present, errors is filled with an empty
* list.
*
* @param wonesysMessage
*/
private void fillErrors(WonesysMessage wonesysMessage) {
String commandId = wonesysMessage.getCommandId();
List<String> errorsList = new Vector<String>();
if (WonesysErrorsInventory.isError(commandId)) {
errorsList.add(WonesysErrorsInventory.getErrorDescription(commandId));
}
setErrors(errorsList);
}
}