Mercurial > hg > ltpda
diff m-toolbox/classes/@history/fromDom.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@history/fromDom.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,117 @@ + +function hists = fromDom(obj, node, inhists) + + % <historyRoot> + % <history UUID="1111" ...> + % ... + % </history> + % <history UUID="2222" methodInfo="#setDescription#ltpda_uoh#Helper#(ID): setDescription.m,v 1.8 2009/09/10 10:05:00 ingo Exp $#[1 -1 1 -1]#true#(ID): minfo.m,v 1.31 2010/04/27 15:49:26 ingo Exp $" methodInvars="{'a'}" proctime="1272392086974" shape="1x1"> + % ... + % <inhists UUID="1111"/> + % </history> + % <history UUID="3333" ...> + % ... + % <inhists UUID="2222"/> + % </history> + % </historyRoot> + + hists = [history.initObjectWithSize(1,0), inhists]; + + % Get history + histNodes = utils.xml.getChildrenByName(node, 'history'); + for ii=0:histNodes.getLength()-1 + + %%%%%%%%%% Make sure that we always have a new history object + h = history(); + + %%%%%%%%%% Call super-class + fromDom@ltpda_nuo(obj, histNodes.item(ii), inhists); + + h = getHistoryObj(h, histNodes.item(ii), hists); + + if ~isempty(h.inhists) + inhistUUIDs = regexp(h.inhists, ' ', 'split'); + if ~isempty(inhistUUIDs) + h.inhists = []; + for uu = 1:numel(inhistUUIDs) + h.inhists = [h.inhists utils.xml.getHistoryFromUUID(hists, inhistUUIDs{uu})]; + end + end + end + + hists = [hists h]; + end + +end + +function obj = getHistoryObj(obj, node, hists) + + % <history UUID="..." methodInfo="..." methodInvars="cell(0,0)" proctime="1"> + % <plistUsed UUID="8a9a33c2-94c7-435b-a42d-ae02f50a3b6f" created="1272388257003" creator="#indiep#127.0.1.1#hws169#GLNX86#7.9 (R2009b)#6.12 (R2009b)#5.3 (R2009b)#4.3 (R2009b)#3.6 (R2009b)#8.4 (R2009b)#2.2 (R2009b)#(ID): provenance.m,v 1.54 2010/04/27 15:49:26 ingo Exp $" shape="1x1"> + % ... + % </plistUsed> + % </history> + + % Get shape + objShape = utils.xml.getShape(node); + + if any(objShape==0) + + obj = history.initObjectWithSize(objShape(1), objShape(2)); + + else + + %%%%%%%%%% Get properties from the node attributes + + % Get methodInfo + if node.hasAttribute('methodInfo') + obj.methodInfo = minfo.setFromEncodedInfo(minfo(), utils.xml.mchar(node.getAttribute('methodInfo'))); + end + + % Get methodInvars + obj.methodInvars = eval(utils.xml.mchar(node.getAttribute('methodInvars'))); + + % Get proctime + obj.proctime = str2double(utils.xml.mchar(node.getAttribute('proctime'))); + + % Get UUID + obj.UUID = utils.xml.mchar(node.getAttribute('UUID')); + + % Get objectClass + obj.objectClass = utils.xml.recoverString(node.getAttribute('objectClass')); + + % Get creator + if node.hasAttribute('creator') + obj.creator = provenance.setFromEncodedInfo(provenance(), utils.xml.mchar(node.getAttribute('creator'))); + else + % XML file saved with LTPDA 2.3.1 + % Get the creator from the plistUsed + plistUsedNode = utils.xml.getChildByName(node, 'plistUsed'); + if ~isempty(plistUsedNode) && plistUsedNode.hasAttribute('creator') + obj.creator = provenance.setFromEncodedInfo(provenance(), utils.xml.mchar(plistUsedNode.getAttribute('creator'))); + end + end + + %%%%%%%%%% Get properties from the child nodes + + % Get plistUsed + plistUsedNode = utils.xml.getChildByName(node, 'plistUsed'); + if ~isempty(plistUsedNode) + obj.plistUsed = plist(plistUsedNode, hists); + end + + % Get minfo + minfoNode = utils.xml.getChildByName(node, 'minfo'); + if ~isempty(minfoNode) + obj.methodInfo = minfo(minfoNode, hists); + end + + % Get inhists + inhistsNode = utils.xml.getChildByName(node, 'inhists'); + if ~isempty(inhistsNode) + obj.inhists = utils.xml.mchar(inhistsNode.getAttribute('UUID')); + end + + end + +end