def parseInputXML(self, inputXML):
     dataDict = {}
     
     xmltree = MU.parseXML(inputXML)
     if xmltree:
         header = xmltree.firstChild.getElementsByTagName('header')
         dataRef = xmltree.firstChild.getElementsByTagName('dataReferences')
         
         if header and dataRef:
             header = header.pop()
             dataRef = dataRef.pop()
             jid = int(header.getAttribute('id'))
             job = header.getElementsByTagName('job')
             primFolder = dataRef.getElementsByTagName('tag')
             
             if jid and job and primFolder:
                 job = job.pop()
                 primFolder = primFolder.pop()
                 paramsDict = {node.tagName: node.firstChild.data for node in job.childNodes if node.nodeType != 3 and node.firstChild}
                 cells = [l.firstChild.data for l in dataRef.getElementsByTagName('location')]
 #                    cellPaths = map(lambda x: os.path.basename(x), cells)
 #                    limsCodes = map(lambda x: '-'.join(LIMSMapper.limsCodeFromCellPath(x)), cellPaths)
                 
                 if paramsDict.get('referenceSequenceName'):
                     dataDict['SecondaryReference'] = paramsDict.get('referenceSequenceName')
                     
                 if paramsDict.get('protocolName'):
                     dataDict['SecondaryProtocol'] = paramsDict.get('protocolName')
 
                 if cells:
                     dataDict['InputPaths'] = cells
 
     return dataDict
 def parseReferenceXML(self, referenceXML):
     dataDict = {}
     xmltree = MU.parseXML(referenceXML)
     if xmltree:
         refInfo = xmltree.getElementsByTagName('reference_info')
         
         if refInfo:
             refInfo = refInfo.pop()
             dataDict['name']         = refInfo.getAttribute('id')
             dataDict['lastModified'] = refInfo.getAttribute('last_modified') 
             #dataDict['md5']          = 'unknown',#refInfo.getAttribute('')
             dataDict['version']      = refInfo.getAttribute('version')
             
     return dataDict
 def parseJobXML(self, jobXML):
     protocolDict = {}
     xmltree = MU.parseXML(jobXML)
     if xmltree:
         protocolInfo = xmltree.getElementsByTagName('protocol')
         moduleStageInfo   = xmltree.getElementsByTagName('moduleStage')
 
         if protocolInfo:
             elemAttr = 'name' if self.isMartin else 'id'
             protocolParams = {x.getAttribute(elemAttr): x.getElementsByTagName('param') for x in protocolInfo}
             if protocolParams:
                 protocolDict['protocol'] = {x: {e.getAttribute('name'): self._getXMLParamValue(e) for e in y} for x,y in protocolParams.iteritems()}
             
         if moduleStageInfo:
             moduleParams = {x.getAttribute('name'): x.getElementsByTagName('param') for x in moduleStageInfo}
             if moduleParams:
                 protocolDict['modules'] = {x: {e.getAttribute('name'): self._getXMLParamValue(e) for e in y} for x,y in moduleParams.iteritems()}
         
     return protocolDict