xml = Val.chkStr(Val.removeBOM(xml));
TransactionOptions tOptions = context.getRequestOptions().getTransactionOptions();
TransactionSummary tSummary = tOptions.getSummary();
PublicationRequest pubRequest = new PublicationRequest(
context.getRequestContext(),publisher,xml);
PublicationRecord pubRecord = pubRequest.getPublicationRecord();
pubRecord.setPublicationMethod(MmdEnums.PublicationMethod.upload.toString());
if (tOptions.getAutoApprove()) {
pubRecord.setAutoApprove(true);
}
if ((tOptions.getApprovalStatus() != null) && (tOptions.getApprovalStatus().length() > 0)) {
pubRecord.setApprovalStatus(MmdEnums.ApprovalStatus.valueOf(tOptions.getApprovalStatus()).toString());
}
if ((tOptions.getPublicationMethod() != null) && (tOptions.getPublicationMethod().length() > 0)) {
pubRecord.setPublicationMethod(MmdEnums.PublicationMethod.valueOf(tOptions.getPublicationMethod()).toString());
}
// TODO: need a sourceUri
//this.determineSourceUri(request,context,pubRequest);
try {
pubRequest.publish();
if (pubRecord.getWasDocumentUnchanged()) {
} else if (pubRecord.getWasDocumentReplaced()) {
tSummary.setTotalUpdated(tSummary.getTotalUpdated() + 1);
} else {
tSummary.setTotalInserted(tSummary.getTotalInserted() + 1);
}
} catch (ValidationException e) {
MessageBroker msgBroker = new MessageBroker();
msgBroker.setBundleBaseName(MessageBroker.DEFAULT_BUNDLE_BASE_NAME);
ArrayList<String> messages = new ArrayList<String>();
e.getValidationErrors().buildMessages(msgBroker,messages,true);
StringBuilder sb = new StringBuilder();
sb.append("<![CDATA[");
sb.append("\r\nMetadata Validation Exception");
if (handle.length() > 0) {
sb.append("\r\nhandle=").append(handle);
sb.append(", sk=").append(e.getKey());
} else {
sb.append("\r\nsk=").append(e.getKey());
}
String id = Val.chkStr(pubRecord.getUuid());
if (id.length() > 0) {
sb.append(", id=").append(id);
}
for (String msg : messages) {
sb.append("\r\n").append(msg);