package pt.utl.ist.scripts.runOnce;

import net.sourceforge.fenixedu.domain.Project;
import net.sourceforge.fenixedu.domain.ProjectSubmission;
import net.sourceforge.fenixedu.domain.ProjectSubmissionFile;
import net.sourceforge.fenixedu.domain.accessControl.Group;
import net.sourceforge.fenixedu.domain.accessControl.GroupUnion;
import net.sourceforge.fenixedu.domain.accessControl.ProjectDepartmentAccessGroup;
import pt.utl.ist.scripts.commons.AtomicScript;

public class AdjustProjectGroups extends AtomicScript {

    @Override
    protected void run() throws Exception {
        int count = 0;
        for (final ProjectSubmission projectSubmission : rootDomainObject.getProjectSubmissionsSet()) {
            final ProjectSubmissionFile projectSubmissionFile = projectSubmission.getProjectSubmissionFile();
            if (projectSubmissionFile != null) {
                final Project project = projectSubmission.getProject();
                final Group permittedGroup = projectSubmissionFile.getPermittedGroup();
                final GroupUnion groupUnion = new GroupUnion(permittedGroup, new ProjectDepartmentAccessGroup(project));
                projectSubmissionFile.setPermittedGroup(groupUnion);
                count++;
            }
        }
        System.out.println("Updated: " + count + " files.");
        System.out.println("Done.");
    }

    public static void main(String[] args) {
        processWriteTransaction(new AdjustProjectGroups());
        System.exit(0);
    }

}
