/** * Move one Sor Record from one person to another where the to person is not in the registry * * @param fromPerson person losing sor record. * @param movingSorPerson record that is moving. * @return Success or failure. */ public boolean moveSystemOfRecordPersonToNewPerson(Person fromPerson, SorPerson movingSorPerson) { Person savedPerson = recalculatePersonBiodemInfo( this.personObjectFactory.getObject(), movingSorPerson, RecalculationType.ADD, false); for (final IdentifierAssigner ia : this.identifierAssigners) { ia.addIdentifierTo(movingSorPerson, savedPerson); } // remove identifiers assigned to new person from old person fromPerson.getIdentifiers().removeAll(savedPerson.getIdentifiers()); updateCalculatedPersonsOnMoveOfSor(savedPerson, fromPerson, movingSorPerson); fromPerson = this.personRepository.savePerson(fromPerson); savedPerson = this.personRepository.savePerson(savedPerson); movingSorPerson.setPersonId(savedPerson.getId()); this.personRepository.saveSorPerson(movingSorPerson); return true; }
/** * Move All Sor Records from one person to another. * * @param fromPerson person losing sor records. * @param toPerson person receiving sor records. * @return Result of move. Validation errors if they occurred or the Person receiving sor records. */ public boolean moveAllSystemOfRecordPerson(Person fromPerson, Person toPerson) { // get the list of sor person records that will be moving. List<SorPerson> sorPersonList = personRepository.getSoRRecordsForPerson(fromPerson); // move each sorRecord for (final SorPerson sorPerson : sorPersonList) { moveSystemOfRecordPerson(fromPerson, toPerson, sorPerson); } Set<? extends Identifier> oldIdentifiers = fromPerson.getIdentifiers(); Set<? extends IdCard> oldIdCards = fromPerson.getIdCards(); this.personRepository.deletePerson(fromPerson); logger.info("moveAllSystemOfRecordPerson: Deleted From Person"); for (Identifier identifier : oldIdentifiers) { if (toPerson.getIdentifiersByType().get(identifier.getType().getName()) == null) { Identifier oldIdentifierAttachedTotoPerson = toPerson.addIdentifier(identifier.getType(), identifier.getValue()); /// if type of this identifier don't exist then add this identifier as primary and not // deleted oldIdentifierAttachedTotoPerson.setDeleted(false); oldIdentifierAttachedTotoPerson.setPrimary(true); } // and if this exist then add this identifier as deleted and no primary else { Identifier oldIdentifierAttachedTotoPerson = toPerson.addIdentifier(identifier.getType(), identifier.getValue()); /// if type of this identifier don't exist then add this identifier as primary and not // deleted oldIdentifierAttachedTotoPerson.setDeleted(true); oldIdentifierAttachedTotoPerson.setPrimary(false); ; } } for (IdCard oldIdCard : oldIdCards) { if (toPerson.getPrimaryIdCard() == null) { toPerson.addIDCard(oldIdCard); } else { if (oldIdCard.isPrimary()) oldIdCard.setPrimary(false); toPerson.addIDCard(oldIdCard); } } this.personRepository.savePerson(toPerson); return true; }