package pt.utl.ist.scripts.runOnce.phd; import java.util.ArrayList; import java.util.List; import net.sourceforge.fenixedu.domain.accessControl.CurrentDegreeCoordinatorsGroup; import net.sourceforge.fenixedu.domain.accessControl.Group; import net.sourceforge.fenixedu.domain.accessControl.GroupUnion; import net.sourceforge.fenixedu.domain.accessControl.PhdProcessGuidingsGroup; import net.sourceforge.fenixedu.domain.accessControl.academicAdministration.AcademicAuthorizationGroup; import net.sourceforge.fenixedu.domain.accessControl.academicAdministration.AcademicOperationType; import net.sourceforge.fenixedu.domain.phd.PhdIndividualProgramProcess; import net.sourceforge.fenixedu.domain.phd.PhdProgram; import net.sourceforge.fenixedu.domain.phd.PhdProgramProcessDocument; import pt.ist.fenixframework.FenixFramework; import pt.utl.ist.scripts.commons.AtomicScript; public class SetDocumentAccessGroupToGuidings extends AtomicScript { public static void main(String[] args) { processWriteTransaction(new SetDocumentAccessGroupToGuidings()); } @Override protected void run() throws Exception { /* Info extracted from DB. External Id OID ProcessNr OID OrientadoresPhone 2295/1317489/1 4681522705038 207/2011 4608500164827 2122138172 2122137155 comiss 2295/1317492/1 4681522705040 207/2011 4608500164827 2122138172 2122137155 report 2295/1314441/1 4681522690726 3/2011 4608500080428 2122138172 2122138189 comiss 4681522897694 3/2011 4608500080428 2122138172 2122138189 report */ System.out.println("Started SetDocumentAccessGroupToGuindings"); String processIds[] = { "4608500164827", "4608500080428", "4608500007022", "4608500103019", "4608500004221" }; for (String id : processIds) { PhdIndividualProgramProcess process = FenixFramework.getDomainObject(id); if (process == null) { System.out.println("WARNING: process OID " + id + " not found."); continue; } if (process.getSeminarProcess() == null) { System.out.println("WARNING: process OID " + id + " has no CAT process."); continue; } List documents = new ArrayList(); documents.add(process.getSeminarProcess().getComissionDocument()); documents.add(process.getSeminarProcess().getReportDocument()); for (PhdProgramProcessDocument document : documents) { if (document == null) { continue; } final Group roleGroup = new AcademicAuthorizationGroup(AcademicOperationType.MANAGE_PHD_PROCESSES); final PhdProgram phdProgram = process.getPhdProgram(); final Group coordinatorGroup = new CurrentDegreeCoordinatorsGroup(phdProgram.getDegree()); final Group guidingsGroup = new PhdProcessGuidingsGroup(process); final Group group = new GroupUnion(roleGroup, coordinatorGroup, guidingsGroup); document.setPermittedGroup(group); System.out.println("Permissions for document OID " + document.getExternalId() + " (ExtStorageId: " + document.getExternalStorageIdentification() + ") updated."); } } } }