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