package module.mission.domain.activity; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import module.mission.domain.Mission; import module.mission.domain.MissionFinancer; import module.mission.domain.MissionItem; import module.mission.domain.MissionItemFinancer; import module.mission.domain.MissionProcess; import module.workflow.activities.ActivityInformation; import module.workflow.activities.WorkflowActivity; public abstract class FundAllocationActivityInformation extends ActivityInformation<MissionProcess> implements Serializable { private static final long serialVersionUID = 1L; public static class MissionItemFinancerFundAllocationBean implements Serializable { private static final long serialVersionUID = 1L; private final MissionItemFinancer missionItemFinancer; private String fundAllocationId; public MissionItemFinancerFundAllocationBean(final MissionItemFinancer missionItemFinancer) { this.missionItemFinancer = missionItemFinancer; } public String getFundAllocationId() { return fundAllocationId; } public void setFundAllocationId(String fundAllocationId) { this.fundAllocationId = fundAllocationId; } public MissionItemFinancer getMissionItemFinancer() { return missionItemFinancer; } } protected abstract boolean canAllocateFunds(final MissionFinancer missionFinancer); private final Collection<MissionItemFinancerFundAllocationBean> missionItemFinancerFundAllocationBeans = new ArrayList<MissionItemFinancerFundAllocationBean>(); public FundAllocationActivityInformation(final MissionProcess missionProcess, final WorkflowActivity<MissionProcess, ? extends ActivityInformation<MissionProcess>> activity) { super(missionProcess, activity); final Mission mission = missionProcess.getMission(); for (final MissionFinancer financer : mission.getFinancerSet()) { if (canAllocateFunds(financer)) { for (final MissionItemFinancer missionItemFinancer : financer.getMissionItemFinancersSet()) { final MissionItem missionItem = missionItemFinancer.getMissionItem(); if (!checkIfRequiresFundAllocation() || missionItem.requiresFundAllocation()) { missionItemFinancerFundAllocationBeans .add(new MissionItemFinancerFundAllocationBean(missionItemFinancer)); } } } } } public Collection<MissionItemFinancerFundAllocationBean> getMissionItemFinancerFundAllocationBeans() { return missionItemFinancerFundAllocationBeans; } @Override public boolean hasAllneededInfo() { return isForwardedFromInput(); } protected boolean checkIfRequiresFundAllocation() { return true; } }