public void execute(
      String line,
      Map<String, EntityUser> users,
      Map<String, EntityDocument> documents,
      ConstantTime constantTime) {
    this.st = new StringTokenizer(line);
    this.users = users;
    this.documents = documents;

    String commandName = st.nextToken();
    if (commandName.equals(SET_USER_INFO)) {
      user = getUser(st.nextToken());
      userType = UserType.valueOf(st.nextToken().toUpperCase());
      time = Long.parseLong(st.nextToken());

      constantTime.setNanoTime(time);
      EntityUser newUserType = new EntityUser();
      newUserType.setType(userType);
      new SetUserInfoImpl(user.getId(), newUserType).genLoad();
    } else if (commandName.equals(VOTE_USER)) {
      voter = getUser(st.nextToken());
      delegate = getUser(st.nextToken());
      voteUserDecision = VoteUserDecision.valueOf(st.nextToken().toUpperCase());
      time = Long.parseLong(st.nextToken());

      Id voterId = voter.getId();
      Id delegateId = delegate.getId();
      constantTime.setNanoTime(time);
      new VoteUserImpl(voterId, delegateId, voteUserDecision).genLoad();
    } else if (commandName.equals(GET_USER_INFO)) {
      user = getUser(st.nextToken());
      showVotes = Boolean.parseBoolean(st.nextToken());
      votesTime = Long.parseLong(st.nextToken());
      userResult = readUserResult();

      Id userId = user.getId();
      GetUserInfoResult result = new GetUserInfoImpl(userId, showVotes, votesTime).genLoad();
      simplifyResult(result, userResult);
      Assert.assertEquals(userResult, result);
    } else if (commandName.equals(VOTE_DOCUMENT)) {
      voter = getUser(st.nextToken());
      document = getDocument(documents, st.nextToken());
      voteDocumentDecision = VoteDocumentDecision.valueOf(st.nextToken().toUpperCase());
    } else if (commandName.equals(GET_DOCUMENT_INFO)) {
      document = getDocument(documents, st.nextToken());
      showVotes = Boolean.parseBoolean(st.nextToken());
      votesTime = Long.parseLong(st.nextToken());
      documentResult = readDocumentResult();
    }
  }