UpdateService.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package in.ocsf.these.days.app.service;/* kpmy 19.02.2017 */
  2. import com.pengrad.telegrambot.model.Update;
  3. import in.ocsf.these.days.app.SM;
  4. import in.ocsf.these.days.app.messaging.UpdateHelper;
  5. import in.ocsf.these.days.app.object.ChatEvent;
  6. import in.ocsf.these.days.app.object.ChatState;
  7. import in.ocsf.these.days.app.object.User;
  8. import in.ocsf.these.days.app.repo.CardRepositrory;
  9. import in.ocsf.these.days.app.repo.MessageRepository;
  10. import in.ocsf.these.days.app.repo.UserRepository;
  11. import org.apache.log4j.Logger;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.statemachine.StateMachine;
  14. import org.springframework.statemachine.config.StateMachineFactory;
  15. import org.springframework.statemachine.persist.DefaultStateMachinePersister;
  16. import org.springframework.statemachine.persist.StateMachinePersister;
  17. import org.springframework.stereotype.Service;
  18. import java.util.List;
  19. @Service
  20. public class UpdateService {
  21. private final Logger log = Logger.getLogger(getClass());
  22. @Autowired
  23. private UserRepository userRepo;
  24. @Autowired
  25. private MessageRepository msgRepo;
  26. @Autowired
  27. private CardRepositrory cardRepo;
  28. @Autowired
  29. private StateMachineFactory<ChatState, ChatEvent> stateMachineFactory;
  30. private void handleUpdate(UpdateHelper upd) throws Exception {
  31. if (!upd.isEdit()) {
  32. if (upd.hasText()) {
  33. if (upd.isCommand()) {
  34. List<String> cmd = upd.getSplitCommand();
  35. switch (cmd.get(0)) {
  36. case "/start":
  37. User user = User.fromUser(upd.getUser());
  38. StateMachine<ChatState, ChatEvent> state = stateMachineFactory.getStateMachine(Long.toHexString(user.getId()));
  39. state.start();
  40. StateMachinePersister<ChatState, ChatEvent, Long> persist = new DefaultStateMachinePersister<>(new SM.InMemoryStateMachinePersist());
  41. persist.persist(state, user.getId());
  42. log.info(Long.toHexString(user.getId()));
  43. break;
  44. }
  45. } else {
  46. }
  47. }
  48. }
  49. }
  50. public void handleUpdate(Update upd) {
  51. try {
  52. handleUpdate(UpdateHelper.from(upd));
  53. } catch (Exception e) {
  54. throw new RuntimeException(e);
  55. }
  56. }
  57. }