package module.mission.domain;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import module.mission.domain.activity.AuthoriseParticipantActivity;
import module.mission.domain.activity.AuthoriseParticipantActivityInformation;
import pt.ist.fenixframework.Atomic;
public class AuthorizeDislocationService {
@Atomic
public static Collection<PersonMissionAuthorization> authorizeDislocation(final Set<PersonMissionAuthorization> personMissionAuthorizations) {
final Collection<PersonMissionAuthorization> notActive = new HashSet<>();
for (final PersonMissionAuthorization personMissionAuthorization : personMissionAuthorizations) {
final Mission mission = personMissionAuthorization.getAssociatedMission();
final MissionProcess missionProcess = mission.getMissionProcess();
final AuthoriseParticipantActivity activity =
(AuthoriseParticipantActivity) missionProcess.getActivity(AuthoriseParticipantActivity.class);
if (activity.isActive(missionProcess)) {
final AuthoriseParticipantActivityInformation activityInformation =
(AuthoriseParticipantActivityInformation) activity.getActivityInformation(missionProcess);
activityInformation.setPersonMissionAuthorization(personMissionAuthorization);
activity.execute(activityInformation);
} else {
notActive.add(personMissionAuthorization);
}
}
return notActive;
}
}