package pt.utl.ist.scripts.runOnce.serviceRequests; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import net.sourceforge.fenixedu.domain.administrativeOffice.AdministrativeOffice; import net.sourceforge.fenixedu.domain.serviceRequests.AcademicServiceRequest; import net.sourceforge.fenixedu.domain.serviceRequests.RectorateSubmissionBatch; import net.sourceforge.fenixedu.domain.serviceRequests.RectorateSubmissionState; import pt.utl.ist.scripts.commons.AtomicScript; public class MoveDeliveredToTheirRightfulPlace extends AtomicScript { private final Map> makeNewBatchWithThese = new HashMap>(); @Override protected void run() throws Exception { for (AdministrativeOffice office : rootDomainObject.getAdministrativeOfficesSet()) { for (RectorateSubmissionBatch batch : office.getRectorateSubmissionBatchSet()) { if (!batch.isReceived() && !batch.isSent()) { for (AcademicServiceRequest request : batch.getDocumentRequestSet()) { if (request.isDelivered()) { putMeWhereIShouldBe(request, batch, office); } } } } } for (Entry> entry : makeNewBatchWithThese.entrySet()) { RectorateSubmissionBatch batch = new RectorateSubmissionBatch(entry.getKey()); batch.setState(RectorateSubmissionState.RECEIVED); for (AcademicServiceRequest request : entry.getValue()) { System.out.println("Moving " + request.getServiceRequestNumberYear() + " from " + request.getRectorateSubmissionBatch().getRange() + " to " + batch.getRange()); request.setRectorateSubmissionBatch(batch); } } } private void putMeWhereIShouldBe(AcademicServiceRequest request, RectorateSubmissionBatch origin, AdministrativeOffice office) { if (origin == null) { if (!makeNewBatchWithThese.containsKey(office)) { makeNewBatchWithThese.put(office, new HashSet()); } makeNewBatchWithThese.get(office).add(request); } else { if (origin.isReceived()) { System.out.println("Moving " + request.getServiceRequestNumberYear() + " from " + request.getRectorateSubmissionBatch().getRange() + " to " + origin.getRange()); request.setRectorateSubmissionBatch(origin); } else { putMeWhereIShouldBe(request, origin.getPreviousRectorateSubmissionBatch(), office); } } } public static void main(String[] args) { processWriteTransaction(new MoveDeliveredToTheirRightfulPlace()); System.exit(0); } }