/*
* Custom Table Map
*/
//Serialize 'current' record into an XMLDocument
var recordSerializer = (typeof GlideRecordXMLSerializer != 'undefined') ? new GlideRecordXMLSerializer() : new Packages.com.glide.script.GlideRecordXMLSerializer();
var xmlstr = recordSerializer.serialize(current);
var xmlDoc = new XMLDocument(xmlstr);
//Process Display Values As Necessary
var pspUtil = new PerspectiumUtil();
var addDisplayValues = pspUtil.getPspPropertyValue("com.perspectium.replicator.add_display_values", "true");
var currentFieldsOnly = pspUtil.getPspPropertyValue("com.perspectium.replicator.share_current_fields", "false");
if (currentFieldsOnly == "true" || addDisplayValues == "true") {
addDVFields();
}
/*
* Any extra mapping, to add
*/
// Send the XMLDoc string to our answer
answer = xmlDoc.toString();
// Helper Functions
//Standard DV Field Processing
function addDVFields(){
var fl = (typeof GlideFieldList != 'undefined') ? new GlideFieldList() : new Packages.com.glide.processors.FieldList();
var tableName = current.getTableName();
var fieldNames = fl.get(current.getTableName(),"");
var arrFields = current.getFields();
for (var i = 0; i < arrFields.size(); i++) {
var glideElement = arrFields.get(i);
var ed = glideElement.getED();
var elName = glideElement.getName();
if (!fieldNames.contains(elName) || (currentFieldsOnly == "true" && tableName != ed.getTableName())) {
removeElement(elName);
}
// Create dv fields for reference, choice, or lists
if (ed.isReference() || ed.isChoiceTable() || ed.getInternalType() == "glide_list") {
addElement("dv_" + elName, glideElement.getDisplayValue());
}
if (!glideElement.hasValue()) {
continue;
}
}
}
//Remove an element from xmlDoc
function removeElement(elName){
var nn = xmlDoc.getElementByTagName(elName);
if(nn && nn.parentNode) {
nn.parentNode.removeChild(nn);
}
}
//Add an element from xmlDoc
function addElement(elName, elValue){
xmlDoc.createElement(elName, elValue);
} |