package pt.utl.ist.scripts.runOnce.unit; import net.sourceforge.fenixedu.domain.Degree; import net.sourceforge.fenixedu.domain.ExecutionYear; import net.sourceforge.fenixedu.domain.accessControl.UnitEmployeesGroup; import net.sourceforge.fenixedu.domain.administrativeOffice.AdministrativeOffice; import net.sourceforge.fenixedu.domain.administrativeOffice.AdministrativeOfficeType; import net.sourceforge.fenixedu.domain.organizationalStructure.AccountabilityTypeEnum; import net.sourceforge.fenixedu.domain.organizationalStructure.PartyType; import net.sourceforge.fenixedu.domain.organizationalStructure.PartyTypeEnum; import net.sourceforge.fenixedu.domain.organizationalStructure.Unit; import net.sourceforge.fenixedu.domain.phd.PhdProgram; import net.sourceforge.fenixedu.domain.space.Campus; import net.sourceforge.fenixedu.domain.util.email.UnitBasedSender; import pt.ist.fenixframework.FenixFramework; import pt.utl.ist.scripts.commons.AtomicScript; public class InitializeAdministrativeOffices extends AtomicScript { @Override protected void run() throws Exception { Unit phdUnit = FenixFramework.getDomainObject("2160369301461"); Unit alamedaGradUnit = FenixFramework.getDomainObject("2160369273412"); Unit tagusGradUnit = FenixFramework.getDomainObject("2160369273402"); UnitBasedSender phdUnitSender = FenixFramework.getDomainObject("4264902527129"); UnitBasedSender alamedaGradUnitSender = FenixFramework.getDomainObject("4264902527130"); UnitBasedSender tagusGradUnitSender = FenixFramework.getDomainObject("4264902527131"); AdministrativeOffice phdOffice = phdUnit.getAdministrativeOffice(); if (phdOffice == null) { phdOffice = new AdministrativeOffice(); phdOffice.setUnit(phdUnit); phdOffice.setAdministrativeOfficeType(AdministrativeOfficeType.MASTER_DEGREE); } phdUnit.setPartyType(PartyType.readPartyTypeByType(PartyTypeEnum.ADMINISTRATIVE_OFFICE_UNIT)); phdUnitSender.setUnit(phdUnit); for (PhdProgram program : rootDomainObject.getPhdProgramsSet()) { phdOffice.addManagedAcademicProgram(program); } for (Degree degree : rootDomainObject.getDegreesSet()) { if (degree.hasPhdProgram()) { phdOffice.addManagedAcademicProgram(degree); } } AdministrativeOffice alamedaGradOffice = alamedaGradUnit.getAdministrativeOffice(); if (alamedaGradOffice == null) { Unit parent = alamedaGradUnit.getParentUnits(AccountabilityTypeEnum.ADMINISTRATIVE_STRUCTURE).iterator().next(); alamedaGradOffice = parent.getAdministrativeOffice(); alamedaGradOffice.setUnit(alamedaGradUnit); alamedaGradOffice.setAdministrativeOfficeType(AdministrativeOfficeType.DEGREE); } alamedaGradUnit.setPartyType(PartyType.readPartyTypeByType(PartyTypeEnum.ADMINISTRATIVE_OFFICE_UNIT)); alamedaGradUnitSender.setUnit(alamedaGradUnit); AdministrativeOffice tagusGradOffice = tagusGradUnit.getAdministrativeOffice(); if (tagusGradOffice == null) { tagusGradOffice = new AdministrativeOffice(); tagusGradOffice.setServiceAgreementTemplate(alamedaGradOffice.getServiceAgreementTemplate()); tagusGradOffice.setUnit(tagusGradUnit); tagusGradOffice.setAdministrativeOfficeType(AdministrativeOfficeType.DEGREE); } tagusGradUnit.setPartyType(PartyType.readPartyTypeByType(PartyTypeEnum.ADMINISTRATIVE_OFFICE_UNIT)); tagusGradUnitSender.setUnit(tagusGradUnit); tagusGradUnitSender.setMembers(new UnitEmployeesGroup(tagusGradUnit)); for (Degree degree : rootDomainObject.getDegreesSet()) { if (degree.hasPhdProgram()) { continue; } if (degree.getCampus(ExecutionYear.readCurrentExecutionYear()).contains(Campus.readActiveCampusByName("Taguspark"))) { tagusGradOffice.addManagedAcademicProgram(degree); } else { alamedaGradOffice.addManagedAcademicProgram(degree); } } } public static void main(String[] args) { processWriteTransaction(new InitializeAdministrativeOffices()); } }