/*
* @(#)NationalMissionProcess.java
*
* Copyright 2010 Instituto Superior Tecnico
* Founding Authors: Luis Cruz, Nuno Ochoa, Paulo Abrantes
*
* https://fenix-ashes.ist.utl.pt/
*
* This file is part of the Expenditure Tracking Module.
*
* The Expenditure Tracking Module is free software: you can
* redistribute it and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* The Expenditure Tracking Module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the Expenditure Tracking Module. If not, see <http://www.gnu.org/licenses/>.
*
*/
package module.mission.domain;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import module.mission.domain.activity.AddFinancerActivity;
import module.mission.domain.activity.AddItemActivity;
import module.mission.domain.activity.AddParticipantActivity;
import module.mission.domain.activity.AllocateFundsActivity;
import module.mission.domain.activity.AllocateProjectFundsActivity;
import module.mission.domain.activity.ApproveActivity;
import module.mission.domain.activity.ArchiveItemActivity;
import module.mission.domain.activity.AssociateMissionProcessActivity;
import module.mission.domain.activity.AuthoriseParticipantActivity;
import module.mission.domain.activity.AuthorizeActivity;
import module.mission.domain.activity.AuthorizeVehicleItemActivity;
import module.mission.domain.activity.CancelProcessActivity;
import module.mission.domain.activity.ChangeAccountingUnitActivity;
import module.mission.domain.activity.CommitFundsActivity;
import module.mission.domain.activity.DefineParticipantAuthorizationChainActivity;
import module.mission.domain.activity.DisassociateMissionProcessActivity;
import module.mission.domain.activity.DistributeItemCostsActivity;
import module.mission.domain.activity.EditItemActivity;
import module.mission.domain.activity.ExceptionalChangeRequestingPerson;
import module.mission.domain.activity.PreAuthorizeActivity;
import module.mission.domain.activity.ProcessPersonnelInformationForCanceledProcessActivity;
import module.mission.domain.activity.ProcessPersonnelInformationForNotCanceledProcessActivity;
import module.mission.domain.activity.RejectProcessActivity;
import module.mission.domain.activity.RemoveFinancerActivity;
import module.mission.domain.activity.RemoveItemActivity;
import module.mission.domain.activity.RemoveParticipantActivity;
import module.mission.domain.activity.RevertMissionForEditingActivity;
import module.mission.domain.activity.RevertTerminationActivity;
import module.mission.domain.activity.RevertVerifyActivity;
import module.mission.domain.activity.SendForProcessTerminationActivity;
import module.mission.domain.activity.SendForProcessTerminationWithChangesActivity;
import module.mission.domain.activity.SubmitForApprovalActivity;
import module.mission.domain.activity.SubmitForApprovalByManagerOrManagementCouncilActivity;
import module.mission.domain.activity.TogleMissionNatureActivity;
import module.mission.domain.activity.TogleParticipantSalaryActivity;
import module.mission.domain.activity.UnAllocateFundsActivity;
import module.mission.domain.activity.UnAllocateProjectFundsActivity;
import module.mission.domain.activity.UnApproveActivity;
import module.mission.domain.activity.UnAuthoriseParticipantActivity;
import module.mission.domain.activity.UnAuthorizeActivity;
import module.mission.domain.activity.UnAuthorizeVehicleItemActivity;
import module.mission.domain.activity.UnCommitFundsActivity;
import module.mission.domain.activity.UnPreAuthorizeActivity;
import module.mission.domain.activity.UnProcessPersonnelActivity;
import module.mission.domain.activity.UnSubmitForApprovalActivity;
import module.mission.domain.activity.UpdateMissionDetailsActivity;
import module.mission.domain.activity.VerifyActivity;
import module.workflow.activities.ActivityInformation;
import module.workflow.activities.GiveProcess;
import module.workflow.activities.ReleaseProcess;
import module.workflow.activities.StealProcess;
import module.workflow.activities.TakeProcess;
import module.workflow.activities.WorkflowActivity;
import module.workflow.domain.WorkflowProcess;
import module.workflow.util.ClassNameBundle;
import org.joda.time.DateTime;
/**
*
* @author João Neves
* @author Luis Cruz
*
*/
@ClassNameBundle(bundle = "MissionResources")
public class NationalMissionProcess extends NationalMissionProcess_Base {
private static final List<WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation>> activities;
static {
final List<WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation>> activitiesAux =
new ArrayList<WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation>>();
activitiesAux.add(new UpdateMissionDetailsActivity());
activitiesAux.add(new AddParticipantActivity());
activitiesAux.add(new RemoveParticipantActivity());
activitiesAux.add(new TogleParticipantSalaryActivity());
activitiesAux.add(new DefineParticipantAuthorizationChainActivity());
activitiesAux.add(new AddFinancerActivity());
activitiesAux.add(new RemoveFinancerActivity());
activitiesAux.add(new ChangeAccountingUnitActivity());
activitiesAux.add(new AddItemActivity());
activitiesAux.add(new EditItemActivity());
activitiesAux.add(new DistributeItemCostsActivity());
activitiesAux.add(new RemoveItemActivity());
activitiesAux.add(new SubmitForApprovalActivity());
activitiesAux.add(new SubmitForApprovalByManagerOrManagementCouncilActivity());
activitiesAux.add(new UnSubmitForApprovalActivity());
activitiesAux.add(new ApproveActivity());
activitiesAux.add(new UnApproveActivity());
activitiesAux.add(new VerifyActivity());
activitiesAux.add(new RevertVerifyActivity());
activitiesAux.add(new AssociateMissionProcessActivity());
activitiesAux.add(new DisassociateMissionProcessActivity());
activitiesAux.add(new AllocateFundsActivity());
activitiesAux.add(new AllocateProjectFundsActivity());
activitiesAux.add(new UnAllocateFundsActivity());
activitiesAux.add(new UnAllocateProjectFundsActivity());
activitiesAux.add(new CommitFundsActivity());
activitiesAux.add(new UnCommitFundsActivity());
activitiesAux.add(new PreAuthorizeActivity());
activitiesAux.add(new UnPreAuthorizeActivity());
activitiesAux.add(new AuthorizeActivity());
activitiesAux.add(new UnAuthorizeActivity());
activitiesAux.add(new AuthoriseParticipantActivity());
activitiesAux.add(new UnAuthoriseParticipantActivity());
activitiesAux.add(new AuthorizeVehicleItemActivity());
activitiesAux.add(new UnAuthorizeVehicleItemActivity());
activitiesAux.add(new ProcessPersonnelInformationForNotCanceledProcessActivity());
activitiesAux.add(new UnProcessPersonnelActivity());
activitiesAux.add(new ProcessPersonnelInformationForCanceledProcessActivity());
activitiesAux.add(new SendForProcessTerminationWithChangesActivity());
activitiesAux.add(new SendForProcessTerminationActivity());
activitiesAux.add(new RevertMissionForEditingActivity());
activitiesAux.add(new ArchiveItemActivity());
activitiesAux.add(new RevertTerminationActivity());
activitiesAux.add(new TogleMissionNatureActivity());
activitiesAux.add(new GiveProcess<MissionProcess>(new MissionGiveProcessUserNotifier()));
activitiesAux.add(new TakeProcess<MissionProcess>());
activitiesAux.add(new ReleaseProcess<MissionProcess>());
activitiesAux.add(new StealProcess<MissionProcess>());
activitiesAux.add(new ExceptionalChangeRequestingPerson());
activitiesAux.add(new CancelProcessActivity());
activitiesAux.add(new RejectProcessActivity());
activities = Collections.unmodifiableList(activitiesAux);
}
public NationalMissionProcess(final String location, final DateTime daparture, final DateTime arrival,
final String objective, final Boolean isCurrentUserAParticipant, final Boolean grantOwnerEquivalence) {
new NationalMission(this, location, daparture, arrival, objective, isCurrentUserAParticipant, grantOwnerEquivalence);
}
@Override
public <T extends WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation>> List<T> getActivities() {
return (List) activities;
}
@Override
public boolean isActive() {
return true;
}
@Override
public String getPresentationName() {
return super.getPresentationName() + getMission().getLocation();
}
}