package pt.utl.ist.scripts.runOnce; import net.sourceforge.fenixedu.domain.Degree; import net.sourceforge.fenixedu.domain.candidacyProcess.IndividualCandidacy; import net.sourceforge.fenixedu.domain.candidacyProcess.IndividualCandidacySeriesGrade; import net.sourceforge.fenixedu.domain.candidacyProcess.IndividualCandidacySeriesGradeState; import net.sourceforge.fenixedu.domain.candidacyProcess.IndividualCandidacyState; import net.sourceforge.fenixedu.domain.candidacyProcess.secondCycle.SecondCycleIndividualCandidacy; import net.sourceforge.fenixedu.domain.candidacyProcess.secondCycle.SecondCycleIndividualCandidacySeriesGrade; import pt.ist.bennu.core.domain.Bennu; import pt.utl.ist.scripts.commons.AtomicScript; public class RepairAndUpdateIndividualCandidaciesSeriesGrade extends AtomicScript { public static void main(String[] args) { AtomicScript.processWriteTransaction(new RepairAndUpdateIndividualCandidaciesSeriesGrade()); } public boolean hasDegree(SecondCycleIndividualCandidacy ic, Degree degree) { for (IndividualCandidacySeriesGrade icsg : ic.getIndividualCandidacySeriesGrade()) { if (icsg.getDegree().equals(degree)) { return true; } } return false; } public void reconstruct(SecondCycleIndividualCandidacy secondCycleIndividualCandidacy) { for (Degree degree : secondCycleIndividualCandidacy.getSelectedDegrees()) { if (!hasDegree(secondCycleIndividualCandidacy, degree)) { SecondCycleIndividualCandidacySeriesGrade newSCICSeriesGrade = new SecondCycleIndividualCandidacySeriesGrade(); newSCICSeriesGrade.setDegree(degree); secondCycleIndividualCandidacy.getIndividualCandidacySeriesGrade().add(newSCICSeriesGrade); } } } @Override protected void run() throws Exception { System.out.println("REPARING ROOT DOMAIN OBJECT CONNECTIONS..."); System.out.println("PRIOR CONENCTIONS"); System.out.println(Bennu.getInstance().getIndividualCandidacySeriesGradeSet().size()); Bennu rdo = Bennu.getInstance(); for (IndividualCandidacy ic : rdo.getIndividualCandidaciesSet()) { for (IndividualCandidacySeriesGrade icsg : ic.getIndividualCandidacySeriesGrade()) { icsg.setRootDomainObject(rdo); } } System.out.println("POST CONENCTIONS"); System.out.println(Bennu.getInstance().getIndividualCandidacySeriesGradeSet().size()); System.out.println("REPARING DEGREE CONNECTION TO ICSG..."); for (IndividualCandidacy sc : Bennu.getInstance().getIndividualCandidaciesSet()) { if (sc.getClass().equals(SecondCycleIndividualCandidacy.class)) { SecondCycleIndividualCandidacy secondCycleIndividualCandidacy = (SecondCycleIndividualCandidacy) sc; SecondCycleIndividualCandidacySeriesGrade scic = (SecondCycleIndividualCandidacySeriesGrade) secondCycleIndividualCandidacy .getIndividualCandidacySeriesGrade().iterator().next(); if (secondCycleIndividualCandidacy.getSelectedDegree() == null) { if (sc.getRegistration() != null) { scic.setDegree(sc.getRegistration().getDegree()); scic.setState(IndividualCandidacySeriesGradeState.ACCEPTED); } else { if (!(scic.getAffinity() == null && scic.getCandidacyGrade() == null && scic.getDegreeNature() == null && (scic.getInterviewGrade() == null || scic.getInterviewGrade().equals("")) && scic.getProfessionalExperience() == null && scic.getSeriesCandidacyGrade() == null)) { for (Degree degree : secondCycleIndividualCandidacy.getSelectedDegrees()) { SecondCycleIndividualCandidacySeriesGrade newSCICSeriesGrade = new SecondCycleIndividualCandidacySeriesGrade(); newSCICSeriesGrade.setDegree(degree); newSCICSeriesGrade.setAffinity(scic.getAffinity()); newSCICSeriesGrade.setCandidacyGrade(scic.getCandidacyGrade()); newSCICSeriesGrade.setDegreeNature(scic.getDegreeNature()); newSCICSeriesGrade.setInterviewGrade(scic.getInterviewGrade()); newSCICSeriesGrade.setProfessionalExperience(scic.getProfessionalExperience()); newSCICSeriesGrade.setSeriesCandidacyGrade(scic.getSeriesCandidacyGrade()); secondCycleIndividualCandidacy.getIndividualCandidacySeriesGrade().add(newSCICSeriesGrade); } scic.delete(); continue; } else { if (secondCycleIndividualCandidacy.getSelectedDegrees().size() > 0) { scic.setDegree(secondCycleIndividualCandidacy.getSelectedDegrees().iterator().next()); } else { scic.delete(); } } } } else { if (secondCycleIndividualCandidacy.getState() == IndividualCandidacyState.ACCEPTED) { scic.setState(IndividualCandidacySeriesGradeState.ACCEPTED); } } reconstruct(secondCycleIndividualCandidacy); } } } }