buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// Retrieve the InstitutionalIdentity.
InstitutionalIdentity instIdent = new InstitutionalIdentity();
try {
instIdent = m_i2sRepository.retrieveInstitutionalIdentity(uPerson);
}
catch (I2sRepositoryException i2sre) {
String errType = "system";
String errCode = "InstitutionalIdentityService-1002";
String errDesc = "Error accessing the I2sRepository to retrieve the "
+ "InstitutionalIdentity. The exception is: " + i2sre.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// If an InstitutionalIdentity was found in the repository for the
// UnknownPerson, the InstitutionalIdentity object will not be null. If
// no InstitutionalIdentity was found for the UnknownPerson, the
// InstitutionalIdentity will be null. If the InstitutionalIdentity is
// not null, serialize it and place it into the DataArea of the
// Provide-Reply. If it is null, clear the DataArea of the Provide-Reply
// to return an empty DataArea as prescribed by the OpenEAI Message
// Protocol.
try {
if (instIdent != null) {
localProvideDoc.getRootElement().getChild("DataArea").
removeContent();
localProvideDoc.getRootElement().getChild("DataArea").
addContent((Element)instIdent.buildOutputFromObject());
}
else {
localProvideDoc.getRootElement().getChild("DataArea").
removeContent();
}
}
catch (EnterpriseLayoutException ele) {
// An error occurred building the InstitutionalIdentity element from
// the InstitutionalIdentity object returned from the I2sRepository.
// Log it an reply with an error.
String errType = "application";
String errCode = "InstitutionalIdentityService-1003";
String errDesc = "An error occurred building the Institutional" +
"Identity element from the InstitutionalIdentity object returned " +
"from the I2sRepository. The exception is: " + ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand " + errDesc);
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// Build the reply message and return it.
String replyContents =
buildReplyDocument(eControlArea, localProvideDoc);
return getMessage(msg, replyContents);
}
}
// Process a Generate-Request message.
if (msgAction.equalsIgnoreCase("Generate")) {
logger.info("[InstitutionalIdentityRequestCommand] Handling an " +
"org.any-openeai-enterprise.CoreApplication.InstitutionalIdentity." +
"Generate-Request message.");
// Get the generate element.
Element generateElement = inDoc.getRootElement().getChild("DataArea")
.getChild("UnknownPerson");
// Verify that the generate element is an UnknownPerson and that it is
// not null. If it is null, reply with an error.
if (generateElement == null) {
String errType = "application";
String errCode = "OpenEAI-1015";
String errDesc = "Invalid generate element found in the Generate-" +
"Request message. This command expects an UnknownPerson.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Get a primed UnknownPerson object from AppConfig.
UnknownPerson uPerson = new UnknownPerson();
try {
uPerson = (UnknownPerson)getAppConfig().
getObject("UnknownPerson");
}
catch (EnterpriseConfigurationObjectException eoce) {
logger.fatal("[InstitutionalIdentityRequestCommand] Error retrieving " +
"an UnknownPerson object from AppConfig. The exception is: " +
eoce.getMessage());
}
// Try to build the UnknownPerson object from the generate element.
try {
uPerson.buildObjectFromInput(generateElement);
}
catch (EnterpriseLayoutException ele) {
// There was an error building the UnknownPerson object from the
// generate element.
String errType = "application";
String errCode = "InstitutionalIdentityService-1004";
String errDesc = "Error building the UnknownPerson object from the" +
"UnknownPerson element in the Generate-Request message. The " +
"exception is: " + ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("Message sent in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Set the TestId.
uPerson.setTestId(testId);
// Generate the InstitutionalIdentity and reply.
InstitutionalIdentity instIdent = new InstitutionalIdentity();
try {
instIdent = m_i2sRepository.generateInstitutionalIdentity(uPerson);
}
catch (I2sRepositoryException i2sre) {
String errType = "system";
String errCode = "InstitutionalIdentityService-1005";
String errDesc = "Error accessing the I2sRepository to generate the " +
"InstitutionalIdentiy. The exception is: " + i2sre.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand]" + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
try {
localResponseDoc.getRootElement().getChild("DataArea").
removeContent();
localResponseDoc.getRootElement().getChild("DataArea").
addContent((Element)instIdent.buildOutputFromObject());
String replyContents = buildReplyDocument(eControlArea, localResponseDoc);
return getMessage(msg, replyContents);
}
catch (EnterpriseLayoutException ele) {
// An error occurred building the InstitutionalIdentity element from
// the InstitutionalIdentity object returned from the I2sRepository.
// Log it an reply with an error.
String errType = "application";
String errCode = "InstitutionalIdentityService-1003";
String errDesc = "An error occurred building the Institutional" +
"Identity element from the InstitutionalIdentity object returned " +
"from the I2sRepository. The exception is: " + ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand " + errDesc);
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
}
// Process an Update-Request message.
if (msgAction.equalsIgnoreCase("Update")) {
logger.info("[InstitutionalIdentityRequestCommand] Handling an " +
"org.any-openeai-enterprise.CoreApplication.InstitutionalIdentity." +
"Update-Request message.");
// Get the update elements.
Element newUpdateElement = inDoc.getRootElement().getChild("DataArea").
getChild("NewData").getChild("InstitutionalIdentity");
Element baselineUpdateElement = inDoc.getRootElement()
.getChild("DataArea").getChild("BaselineData")
.getChild("InstitutionalIdentity");
// Verify that the NewData element is an InstitutionalIdentity and that it
// is not null. If it is null, reply with an error.
if (newUpdateElement == null) {
String errType = "application";
String errCode = "OpenEAI-1011";
String errDesc = "Invalid update element found in the NewData " +
"element of the Update-Request message. This command expects an " +
"InstitutionalIdentity.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Verify that the BaselineData element is an InstitutionalIdentity and
// that it is not null. If it is null, reply with an error.
if (baselineUpdateElement == null) {
String errType = "application";
String errCode = "OpenEAI-1012";
String errDesc = "Invalid update element found in the BaselineData " +
"element of the Update-Request message. This command expects an " +
"InstitutionalIdentity.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Get two primed InstitutionalIdentity objects out of AppConfig.
InstitutionalIdentity newInstIdent = new InstitutionalIdentity();
InstitutionalIdentity baselineInstIdent = new InstitutionalIdentity();
try {
newInstIdent = (InstitutionalIdentity)getAppConfig().
getObject("InstitutionalIdentity");
baselineInstIdent = (InstitutionalIdentity)getAppConfig().
getObject("InstitutionalIdentity");
}
catch (EnterpriseConfigurationObjectException eoce) {
logger.fatal("[InstitutionalIdentityRequestCommand] Error retrieving an" +
" InstitutionalIdentity object from AppConfig. The exception is: " +
eoce.getMessage());
}
// Try to build an InstitutionalIdentity object from the NewData element.
try {
newInstIdent.buildObjectFromInput(newUpdateElement);
}
catch (EnterpriseLayoutException ele) {
// An error occurred building the InstitutionalIdentity object from the
// InstitutionalIdentity NewData element.
String errType = "application";
String errCode = "InstitutionalIdentityService-1006";
String errDesc = "Error building the InstitutionalIdentity object " +
"from the InstitutionalIdentity element found in the NewData " +
"element in the Update-Request message. The exception is: " +
ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("Message sent in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Try to build an InstitutionalIdentity object from the BaselineData
// element.
try {
baselineInstIdent.buildObjectFromInput(baselineUpdateElement);
}
catch (EnterpriseLayoutException ele) {
// There was an error building the InstitutionalIdentity object from the
// baseline update element.
String errType = "application";
String errCode = "InstitutionalIdentityService-1007";
String errDesc = "Error building the InstitutionalIdentity object " +
"from the InstitutionalIdentity element found in the BaselineData " +
"element in the Update-Request message. The exception is: " +
ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("Message sent in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Verify that the baseline matches the current state of the
// InstitutionalIdentity. Otherwise reply with a baseline stale error.
// --- Retrieve the current state of the InstitutionalIdentity.
Identifier id = new Identifier();
try {
id.setType("InstitutionalId");
id.setValue(baselineInstIdent.getInstitutionalId());
}
catch (EnterpriseFieldException efe) {
// An error occurred setting the values of the identifier to use to
// retrieve the current state of the InstitutionalIdentity. Log it
// and throw an exception.
String errType = "application";
String errCode = "InstitutionalIdentityService-1011";
String errDesc = "Error occurred setting field values for the " +
"identifier to use in retrieving the current state of the " +
"InstitutionalIdentity. The exception is: " + efe.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
InstitutionalIdentity currentInstIdent = new InstitutionalIdentity();
try {
currentInstIdent = m_i2sRepository.retrieveInstitutionalIdentity(id);
}
catch (I2sRepositoryException i2sre) {
String errType = "system";
String errCode = "InstitutionalIdentityService-1002";
String errDesc = "Error accessing the I2sRepository to retrieve the "
+ "InstitutionalIdentity. The exception is: " + i2sre.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// --- If the InstitutionalIdentity to update does not exist, reply with
// an error.
if (currentInstIdent == null) {
String errType = "application";
String errCode = "OpenEAI-1016";
String errDesc = "The object for which an update was requested does " +
"not exist. An object must be created before it can be updated.";
logger.fatal("[RdbmsI2sRepository.updateInstitutionalIdentity] " +
errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// --- If the InstitutionalIdentity to update does exists, compare the
// baseline to the current state of the InstitutionalIdentity. If they
// do not match, reply with an error.
try {
if (baselineInstIdent.equals(currentInstIdent) == false) {
// The baseline does not match the current state of the
// InstitutionalIdentity. Log it and reply with an error.
String errType = "application";
String errCode = "OpenEAI-1014";
String errDesc = "The baseline is stale. This InstitutionalIdentity " +
"has been updated since you queried for the baseline. You must " +
"query for the InstitutionalIdentity to retrieve a current baseline"
+ " before an update can be performed.";
logger.fatal("[RdbmsI2sRepository.updateInstitutionalIdentity] " +
errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
}
catch (XmlEnterpriseObjectException xeoe) {
// An error occurred comparing the baseline InstitutionalIdentity and
// the current state of the InstitutionalIdentity. Log it, and throw an
// exception.
String errType = "application";
String errCode = "InstitutionalIdentityService-1012";
String errDesc = "An error occurred comparing the baseline " +
"InstitutionalIdentity with the current state of the " +
"InstitutionalIdentity. The exception is: " + xeoe.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localProvideDoc, errors);
return getMessage(msg, replyContents);
}
// Set the TestId.
baselineInstIdent.setTestId(testId);
newInstIdent.setTestId(testId);
// Update the InstitutionalIdentity and reply.
try {
m_i2sRepository.updateInstitutionalIdentity(baselineInstIdent,
newInstIdent);
}
catch (I2sRepositoryException i2sre) {
String errType = "system";
String errCode = "InstitutionalIdentityService-1008";
String errDesc = "Error accessing the I2Repository to update the " +
"InstitutionalIdentity. The exception is: " + i2sre.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand]" + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Reply with a success.
String replyContents = buildReplyDocument(eControlArea, localResponseDoc);
return getMessage(msg, replyContents);
}
// Process a Delete-Request.
if (msgAction.equalsIgnoreCase("Delete")) {
logger.info("[InstitutionalIdentityRequestCommand] Handling an " +
"org.any-openeai-enterprise.CoreApplication.InstitutionalIdentity." +
"Delete-Request message.");
// Get the delete action type.
Attribute aDeleteType = inDoc.getRootElement().getChild("DataArea").
getChild("DeleteData").getChild("DeleteAction").getAttribute("type");
String deleteAction = aDeleteType.getValue();
// Verify that the delete action is valid. If it is not, reply with an
// error.
if (deleteAction.equalsIgnoreCase("delete") == false &&
deleteAction.equalsIgnoreCase("purge") == false) {
String errType = "application";
String errCode = "OpenEAI-1008";
String errDesc = "Invalid delete action type. Only delete actions of " +
"type 'delete' and 'purge' are allowed.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// If the delete action is of type purge and purge support is presently
// disabled, reply with an error.
if (deleteAction.equalsIgnoreCase("purge") &&
m_allowPurge == false) {
String errType = "application";
String errCode = "OpenEAI-1009";
String errDesc = "Purge disabled. The delete action type of purge is " +
"supported by this implementation, but it is presently disabled.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent " +
"in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Get the delete element.
Element deleteElement = inDoc.getRootElement().getChild("DataArea").
getChild("DeleteData").getChild("InstitutionalIdentity");
// Verify that the delete element is an InstitutionalIdentity and that it
// is not null. If it is null, reply with an error.
if (deleteElement == null) {
String errType = "application";
String errCode = "OpenEAI-1010";
String errDesc = "Invalid delete element found in the Delete-Request " +
"message. This command expects an ApplicationSession.";
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("[InstitutionalIdentityRequestCommand] Message sent in " +
"is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Get a configured InstitutionalIdentity object out of AppConfig.
InstitutionalIdentity instIdent = new InstitutionalIdentity();
try {
instIdent = (InstitutionalIdentity)getAppConfig().
getObject("InstitutionalIdentity");
}
catch (EnterpriseConfigurationObjectException eoce) {
// An error occurred retrieving an InstitutionalIdentity object from
// AppConfig. Log it and throw an exception.
String errMsg = "An error occurred retrieving an Institutional" +
"Identity object from AppConfig. The exception is: " +
eoce.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errMsg);
}
// Try to build the InstitutionalIdentity object from the delete Element.
try {
instIdent.buildObjectFromInput(deleteElement);
}
catch (EnterpriseLayoutException ele) {
// There was an error building the InstitutionalIdentity object from the
// delete element.
String errType = "application";
String errCode = "InstitutionalIdentityService-1009";
String errDesc = "Error building the InstitutionalIdentity object " +
"from the InstitutionalIdentity element in the Delete-Request " +
"message. The exception is: " + ele.getMessage();
logger.fatal("[InstitutionalIdentityRequestCommand] " + errDesc);
logger.fatal("Message sent in is: \n" + getMessageBody(inDoc));
ArrayList errors = new ArrayList();
errors.add(buildError(errType, errCode, errDesc));
String replyContents =
buildReplyDocumentWithErrors(eControlArea, localResponseDoc, errors);
return getMessage(msg, replyContents);
}
// Set the TestId.
instIdent.setTestId(testId);
// Delete the InstitutionalIdentity.
try {
m_i2sRepository.deleteInstitutionalIdentity(deleteAction, instIdent);
}