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 AssociateMissionProcessActivity extends MissionProcessActivity<MissionProcess, AssociateMissionProcessActivityInfo> {
@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 AssociateMissionProcessActivityInfo activityInfo) {
activityInfo.getProcess().addAssociatedMissionProcess(activityInfo.getRemoteMissionSystem(),
activityInfo.getProcessNumber().trim(), activityInfo.getExternalId(), activityInfo.isConnect());
}
@Override
public AssociateMissionProcessActivityInfo getActivityInformation(final MissionProcess process) {
return new AssociateMissionProcessActivityInfo(process, this);
}
@Override
protected ActivityLog logExecution(MissionProcess thisProcess, String operationName, User user,
AssociateMissionProcessActivityInfo activityInfo, String... argumentsDescription) {
return super.logExecution(thisProcess, operationName, user, activityInfo, argumentsDescription);
}
@Override
public boolean isVisible() {
return false;
}
@Override
protected String[] getArgumentsDescription(AssociateMissionProcessActivityInfo activityInformation) {
final MissionProcess process = activityInformation.getProcess();
final StringBuilder builder = new StringBuilder();
for (final RemoteMissionProcess remoteMissionProcess : process.getRemoteMissionProcessSet()) {
if (builder.length() > 0) {
builder.append(", ");
}
builder.append(remoteMissionProcess.getProcessNumber());
}
return new String[] { activityInformation.getProcessNumber(), builder.toString() };
}
}