line source
function collectedHist = attachToDom(objs, dom, parent, collectedHist)
if isempty(objs)
% Create empty param node with the attribute 'shape'
utils.xml.attachEmptyObjectNode(objs, dom, parent);
else
for oo = 1:numel(objs)
obj = objs(oo);
% Create object node
paramNode = dom.createElement('param');
paramNode.setAttribute('shape', sprintf('%dx%d', size(objs)));
% Call superclass
collectedHist = attachToDom@ltpda_nuo(obj, dom, paramNode, collectedHist);
% Add key
paramNode.setAttribute('key', obj.key);
% Add param value
val = obj.getVal;
valNode = dom.createElement('val');
valNode.setAttribute('shape', sprintf('%dx%d', size(val)));
if isnumeric(val) || islogical(val)
% We should have helper utilities for the types which are not objects.
% Again, we don't care here what happens inside the helper utility, it
% may add one or more nodes, or just write to attributes.
valNode.setAttribute('type', 'double');
utils.xml.attachNumberToDom(val, dom, valNode);
elseif ischar(val)
valNode.setAttribute('type', 'char');
utils.xml.attachCharToDom(val, dom, valNode);
elseif iscellstr(val)
content = dom.createTextNode(utils.xml.cellstr2str(val));
valNode.setAttribute('type', 'cellstr');
valNode.appendChild(content);
elseif iscell(val)
valNode.setAttribute('type', 'cell');
collectedHist = utils.xml.attachCellToDom(val, dom, valNode, collectedHist);
elseif isstruct(val)
valNode.setAttribute('type', 'struct');
collectedHist = utils.xml.attachStructToDom(val, dom, valNode, collectedHist);
elseif isa(val, 'sym')
valNode.setAttribute('type', 'sym');
utils.xml.attachSymToDom(val, dom, valNode);
elseif isa(val, 'history')
histUUIDs = val(1).UUID;
for hh = 2:numel(val)
histUUIDs = [histUUIDs, ' ', val(hh).UUID];
end
valNode.setAttribute('type', 'history');
valNode.setAttribute('val', histUUIDs);
collectedHist = val.attachToDom(dom, parent, collectedHist);
elseif isa(val, 'ltpda_obj')
valNode.setAttribute('type', class(val));
collectedHist = val.attachToDom(dom, valNode, collectedHist);
elseif isa(val, 'sun.util.calendar.ZoneInfo')
content = dom.createTextNode(char(val.getID));
valNode.setAttribute('type', class(val));
valNode.appendChild(content);
else
error('### Unknown data type to attach [%s]', class(val));
end
paramNode.appendChild(valNode);
% Add desc
paramNode.setAttribute('desc', obj.desc);
% Add the properties of the paramValue object to the param node
if isa(obj.val, 'paramValue')
prop = obj.val.property;
if ~isempty(prop)
paramPropertiesNode = dom.createElement('properties');
collectedHist = utils.xml.attachStructToDom(prop, dom, paramPropertiesNode, collectedHist);
paramNode.appendChild(paramPropertiesNode);
end
end
% Add to parent node
parent.appendChild(paramNode);
end
end
end