@Getter
@Setter
@PlanningEntity
public class Match {
private SimpleScore score;
private int id;
@CustomShadowVariable(variableListenerClass = MatchVariableListner.class, sources = @PlanningVariableReference(entityClass = Team.class ,variableName = "match"))
private List<Team> team;
private Court court;
private Date available;
}
это класс матча
@Getter
@Setter
@PlanningEntity
public class Team {
private Grade grade;
private Court court;
@PlanningVariable(valueRangeProviderRefs = {"matches"})
private Match match;
private Club club;
private Divison divison ;
private List<Date> availableDates;
private String name;
private String id;
private List<Sequence> sequence;
}
это класс команды
public class MatchVariableListner implements VariableListener<Team> {
protected void updateMatch(ScoreDirector scoreDirector, Team team) {
System.out.println("hello");
}
@Override
public void beforeEntityAdded(ScoreDirector scoreDirector, Team team) {
}
@Override
public void afterEntityAdded(ScoreDirector scoreDirector, Team team) {
updateMatch(scoreDirector,team);
}
@Override
public void beforeVariableChanged(ScoreDirector scoreDirector, Team team) {
System.out.println("hehhe");
}
@Override
public void afterVariableChanged(ScoreDirector scoreDirector, Team team) {
updateMatch(scoreDirector,team);
}
@Override
public void beforeEntityRemoved(ScoreDirector scoreDirector, Team team) {
System.out.println("hehhe");
}
@Override
public void afterEntityRemoved(ScoreDirector scoreDirector, Team team) {
System.out.println("hehhe");
}
}
это список
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@PlanningSolution
public class WSASolution {
@PlanningEntityCollectionProperty
List<Team> teams;
@ProblemFactCollectionProperty
@ValueRangeProvider(id = "matches")
List<Match> matches;
@ProblemFactCollectionProperty
List<Court> courts;
public WSASolution(List<Team> teams, List<Match> matches, List<Court> courts) {
this.teams = teams;
this.matches = matches;
this.courts = courts;
}
@PlanningScore
private HardSoftScore score;
}
это планирование Сущность решения: он работает хорошо, добавляя совпадения в каждую команду, но обратная теневая переменная не вызывает методы слушателя, с помощью которых я хочу выполнить некоторые операции. Но слушатель не получает вызовы переопределенных методов интерфейса. пожалуйста, помогите спасибо заранее