Теперь есть дефолтный ответ, если ни один из юнитов не подошел

This commit is contained in:
Mark Struchkov 2019-05-16 00:34:47 +03:00
parent 9c821ee1fb
commit 666e9223ea

View File

@ -24,6 +24,7 @@ public class Autoresponder {
private static final UnitPriorityComparator UNIT_PRIORITY_COMPARATOR = new UnitPriorityComparator(); private static final UnitPriorityComparator UNIT_PRIORITY_COMPARATOR = new UnitPriorityComparator();
private final Set<Unit> startUnits; private final Set<Unit> startUnits;
private Unit defaultUnit;
private final UnitPointerService unitPointerService; private final UnitPointerService unitPointerService;
public Autoresponder(UnitPointerService unitPointerService, Set<Unit> startUnits) { public Autoresponder(UnitPointerService unitPointerService, Set<Unit> startUnits) {
@ -35,18 +36,26 @@ public class Autoresponder {
return unitPointerService; return unitPointerService;
} }
public void setDefaultUnit(Unit defaultUnit) {
this.defaultUnit = defaultUnit;
}
/* /*
Возвращает unit на основании сообщения пользователя Возвращает unit на основании сообщения пользователя
*/ */
public Unit answer(Integer personId, String message) { public Unit answer(Integer personId, String message) {
UnitPointer unitPointer = checkAndAddPerson(personId); UnitPointer unitPointer = checkAndAddPerson(personId);
Unit unit; Unit unit;
try {
if (unitPointer.getUnit() == null || unitPointer.getUnit().getNextUnits() == null) { if (unitPointer.getUnit() == null || unitPointer.getUnit().getNextUnits() == null) {
unit = nextUnit(startUnits, message); // выбирает unit из startUnits, если пользователь обращается впервые unit = nextUnit(startUnits, message); // выбирает unit из startUnits, если пользователь обращается впервые
} else { } else {
unit = nextUnit(unitPointer.getUnit().getNextUnits(), message); unit = nextUnit(unitPointer.getUnit().getNextUnits(), message);
} }
unitPointerService.edit(personId, unit); unitPointerService.edit(personId, unit);
} catch (NotFoundUnitException e) {
unit = defaultUnit;
}
return unit; return unit;
} }