changeAllPersonInfo(sp, infoPerson, existingMasterDegreeCandidate.getPerson());
ICountry country = null; if ((infoPerson.getInfoPais() != null)) { country = sp.getIPersistentCountry().readCountryByNationality( infoPerson.getInfoPais().getNationality()); }  IPerson person = existingMasterDegreeCandidate.getPerson(); person.edit(infoPerson, country);
    public InfoMasterDegreeCandidate run(InfoMasterDegreeCandidate newMasterDegreeCandidate,            InfoPerson infoPerson, IUserView userView, Boolean isNewPerson)            throws FenixServiceException, ExcepcaoPersistencia {        ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();        IExecutionDegree executionDegree = (IExecutionDegree) sp.getIPersistentExecutionDegree()                .readByOID(ExecutionDegree.class,                        newMasterDegreeCandidate.getInfoExecutionDegree().getIdInternal());        IMasterDegreeCandidate existingMasterDegreeCandidate = sp.getIPersistentMasterDegreeCandidate()                .readByIdentificationDocNumberAndTypeAndExecutionDegreeAndSpecialization(                        newMasterDegreeCandidate.getInfoPerson().getNumeroDocumentoIdentificacao(),                        newMasterDegreeCandidate.getInfoPerson().getTipoDocumentoIdentificacao(),                        executionDegree.getIdInternal(), newMasterDegreeCandidate.getSpecialization());        if (existingMasterDegreeCandidate == null) {            throw new ExcepcaoInexistente("Unknown Candidate !!");        }        // Change Personal Information        if (isNewPerson) {            changeAllPersonInfo(sp, infoPerson, existingMasterDegreeCandidate.getPerson());        } else {            IService service = new ChangePersonalContactInformation();            ((ChangePersonalContactInformation) service).run(userView, infoPerson);        }        // Change Candidate Information        sp.getIPersistentMasterDegreeCandidate().simpleLockWrite(existingMasterDegreeCandidate);        existingMasterDegreeCandidate.setAverage(newMasterDegreeCandidate.getAverage());        existingMasterDegreeCandidate.setMajorDegree(newMasterDegreeCandidate.getMajorDegree());        existingMasterDegreeCandidate.setMajorDegreeSchool(newMasterDegreeCandidate                .getMajorDegreeSchool());        existingMasterDegreeCandidate.setMajorDegreeYear(newMasterDegreeCandidate.getMajorDegreeYear());        existingMasterDegreeCandidate.setSpecializationArea(newMasterDegreeCandidate                .getSpecializationArea());        ICandidateSituation oldCandidateSituation = existingMasterDegreeCandidate                .getActiveCandidateSituation();        oldCandidateSituation.setValidation(new State(State.INACTIVE));        sp.getIPersistentCandidateSituation().simpleLockWrite(oldCandidateSituation);        ICandidateSituation activeCandidateSituation = new CandidateSituation();        sp.getIPersistentCandidateSituation().simpleLockWrite(activeCandidateSituation);        activeCandidateSituation.setDate(Calendar.getInstance().getTime());        activeCandidateSituation.setSituation(SituationName.PENDENT_COM_DADOS_OBJ);        activeCandidateSituation.setValidation(new State(State.ACTIVE));        activeCandidateSituation.setMasterDegreeCandidate(existingMasterDegreeCandidate);        existingMasterDegreeCandidate.getSituations().add(activeCandidateSituation);        return InfoMasterDegreeCandidateWithInfoPerson.newInfoFromDomain(existingMasterDegreeCandidate);    }