package module.mission.domain.activity; import module.mission.domain.MissionProcess; import module.mission.domain.RemoteMissionProcess; import module.workflow.domain.ActivityLog; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.bennu.core.i18n.BundleUtil; import pt.ist.fenixframework.Atomic; public class DisassociateMissionProcessActivity extends MissionProcessActivity<MissionProcess, DisassociateMissionProcessActivityInfo> { @Override public String getLocalizedName() { return BundleUtil.getString(getUsedBundle(), "activity." + getClass().getSimpleName()); } @Override public String getUsedBundle() { return "resources/MissionResources"; } @Override public boolean isActive(final MissionProcess missionProcess, final User user) { return super.isActive(missionProcess, user) && missionProcess.isRequestor(user); } @Atomic @Override protected void process(final DisassociateMissionProcessActivityInfo activityInfo) { activityInfo.getProcess() .removeAssociatedMissionProcess(activityInfo.getRemoteMissionProcess(), activityInfo.isConnect()); } @Override public DisassociateMissionProcessActivityInfo getActivityInformation(final MissionProcess process) { return new DisassociateMissionProcessActivityInfo(process, this); } @Override protected ActivityLog logExecution(MissionProcess thisProcess, String operationName, User user, DisassociateMissionProcessActivityInfo activityInfo, String... argumentsDescription) { return super.logExecution(thisProcess, operationName, user, activityInfo, argumentsDescription); } @Override public boolean isVisible() { return false; } @Override protected String[] getArgumentsDescription(DisassociateMissionProcessActivityInfo activityInformation) { final RemoteMissionProcess remoteMissionProcess = activityInformation.getRemoteMissionProcess(); final StringBuilder builder = new StringBuilder(); for (final RemoteMissionProcess otherRemoteMissionProcess : activityInformation.getProcess().getRemoteMissionProcessSet()) { if (builder.length() > 0) { builder.append(", "); } builder.append(otherRemoteMissionProcess.getProcessNumber()); } return new String[] { remoteMissionProcess.getProcessNumber(), builder.toString() }; } }