def _merge(pcMerge, pcMaster, pcSlave): Log.trace(__class__, "_merge() called") # add headerNames in pcNew for kMaster in pcMaster.getHeaderNames(): pcMerge.addHeader(kMaster) # Merge attributes of pcMaster to pcNew for pMaster in pcMaster.getPersons(): pMerge = Merge.getPerson(pcMerge, pMaster) if(pMerge == None): pMerge = Person() pcMerge.addPerson(pMerge) pSlave = Merge.getPerson(pcSlave, pMaster) if(pSlave == None): # do copy of pMaster pSlave = Person() for kMaster in pcMaster.getHeaderNames(): aMaster = pMaster.getAttribute(kMaster) aSlave = pSlave.getAttribute(kMaster) aMerge = Person.ATTR_NOT_AVAILABLE # Attribute is empty if((aMaster != "" or aMaster != Person.ATTR_NOT_AVAILABLE) and (aSlave == "" or aSlave == Person.ATTR_NOT_AVAILABLE)): aMerge = aMaster elif((aSlave != "" or aSlave != Person.ATTR_NOT_AVAILABLE) and (aMaster == "" or aMaster == Person.ATTR_NOT_AVAILABLE)): aMerge = aSlave # Attributes are not empty elif(aMaster == aSlave): aMerge = aMaster else: Log.warn(__class__, "merge conflict:\nMaster=" + aMaster + "\n Slave=" + aSlave) pMerge.setAttribute(kMaster, aMerge) Log.trace(__class__, "_merge() finished")