package in.ocsf.these.days.app.service;/* kpmy 19.02.2017 */ import com.pengrad.telegrambot.model.Update; import in.ocsf.these.days.app.SM; import in.ocsf.these.days.app.messaging.UpdateHelper; import in.ocsf.these.days.app.object.ChatEvent; import in.ocsf.these.days.app.object.ChatState; import in.ocsf.these.days.app.object.User; import in.ocsf.these.days.app.repo.CardRepositrory; import in.ocsf.these.days.app.repo.MessageRepository; import in.ocsf.these.days.app.repo.UserRepository; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.statemachine.StateMachine; import org.springframework.statemachine.config.StateMachineFactory; import org.springframework.statemachine.persist.DefaultStateMachinePersister; import org.springframework.statemachine.persist.StateMachinePersister; import org.springframework.stereotype.Service; import java.util.List; @Service public class UpdateService { private final Logger log = Logger.getLogger(getClass()); @Autowired private UserRepository userRepo; @Autowired private MessageRepository msgRepo; @Autowired private CardRepositrory cardRepo; @Autowired private StateMachineFactory stateMachineFactory; private void handleUpdate(UpdateHelper upd) throws Exception { if (!upd.isEdit()) { if (upd.hasText()) { if (upd.isCommand()) { List cmd = upd.getSplitCommand(); switch (cmd.get(0)) { case "/start": User user = User.fromUser(upd.getUser()); StateMachine state = stateMachineFactory.getStateMachine(Long.toHexString(user.getId())); state.start(); StateMachinePersister persist = new DefaultStateMachinePersister<>(new SM.InMemoryStateMachinePersist()); persist.persist(state, user.getId()); log.info(Long.toHexString(user.getId())); break; } } else { } } } } public void handleUpdate(Update upd) { try { handleUpdate(UpdateHelper.from(upd)); } catch (Exception e) { throw new RuntimeException(e); } } }