@Override public void run(HasPlansAndId<Plan,Person> person) { // leave removing of plans to the plans remover. Thsi was initially so that the master always only had one plan in memory // however, this doesn't have to be the case for all scenarios. // person.removePlan(person.getSelectedPlan()); Plan plan = plans.get(person.getId().toString()); person.addPlan(plan); person.setSelectedPlan(plan); }
private void removePlans(final HasPlansAndId<PL, AG> person, final int maxNumberOfPlans) { while (person.getPlans().size() > maxNumberOfPlans) { PL plan = this.removalPlanSelector.selectPlan(person); person.removePlan(plan); if (plan == person.getSelectedPlan()) { final PL newPlanToSelect = new RandomPlanSelector<PL, AG>().selectPlan(person) ; if ( newPlanToSelect == null ) { throw new IllegalStateException( "could not find a plan to select for person "+person ); } person.setSelectedPlan( newPlanToSelect ); } } }
person.setSelectedPlan(plan);