package module.mission.domain.activity; import module.mission.domain.Mission; import module.mission.domain.MissionChangeDescription; import module.mission.domain.MissionFinancer; import module.mission.domain.MissionProcess; import module.mission.domain.MissionVersion; import module.mission.domain.PersonMissionAuthorization; import module.mission.domain.VehiclItem; import module.workflow.activities.ActivityInformation; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.bennu.core.i18n.BundleUtil; public class RevertMissionForEditingActivity extends MissionProcessActivity<MissionProcess, RevertMissionForEditingActivityInformation> { @Override public String getLocalizedName() { return BundleUtil.getString("resources/MissionResources", "activity." + getClass().getSimpleName()); } @Override public boolean isActive(MissionProcess missionProcess, User user) { return super.isActive(missionProcess, user) && !missionProcess.isUnderConstruction() && !missionProcess.isCanceled() && missionProcess.isRequestor(user) && !missionProcess.getMission().getMissionVersion().isTerminated() && !missionProcess.isPersonalInformationProcessed(); } @Override protected void process(RevertMissionForEditingActivityInformation activityInformation) { MissionProcess missionProcess = activityInformation.getProcess(); Mission mission = missionProcess.getMission(); new MissionVersion(mission); new MissionChangeDescription(mission, activityInformation.getDescription()); for (MissionFinancer missionFinancer : mission.getFinancerSet()) { missionFinancer.clearFundAllocations(); missionFinancer.setCommitmentNumber(null); missionFinancer.setAuthorization(null); missionFinancer.setApproval(null); } for (VehiclItem vehicle : mission.getVehicleItems()) { vehicle.setAuthorized(false); } for (PersonMissionAuthorization personAuthorization : mission.getPersonMissionAuthorizationsSet()) { personAuthorization.clearAuthorities(); } mission.setApprovalForMissionWithNoFinancers(null); mission.setIsApprovedByMissionResponsible(null); mission.setIsVerified(false); mission.setIsPersonalInformationProcessed(false); missionProcess.removeFromVerificationQueue(); missionProcess.removeFromParticipantInformationQueues(); missionProcess.setIsUnderConstruction(Boolean.TRUE); } @Override public ActivityInformation<MissionProcess> getActivityInformation(MissionProcess process) { return new RevertMissionForEditingActivityInformation(process, this); } @Override public boolean isDefaultInputInterfaceUsed() { return false; } }