Example #1
0
  public boolean perform(
      String[] strings,
      List clients,
      List rejectList,
      Map groups,
      ChatClientHandler_345387 myHandler)
      throws IOException {
    // ユーザの名前を入れてソートするためのListを宣言(ローカル変数)
    List names = new ArrayList();

    // 全クライアントのListに加える
    for (int i = 0; i < clients.size(); i++) {
      ChatClientHandler_345387 handler = (ChatClientHandler_345387) clients.get(i);
      names.add(handler.getClientName());
    }

    // ソートする
    Collections.sort(names);

    // 接続中のクライアント名をコンマで区切って昇順に一行で表示
    String returnMessage = "";
    for (int i = 0; i < names.size(); i++) {
      returnMessage += names.get(i) + ",";
    }
    myHandler.send(returnMessage);

    System.out.println(myHandler.getClientName() + ": users: " + returnMessage);

    return true;
  }
  public boolean perform(
      String[] strings,
      List clients,
      List rejectList,
      Map groups,
      ChatClientHandler_345387 myHandler)
      throws IOException {
    // 作成するグループ名を入力文字列から取得
    String groupName = strings[1];
    // グループ名が重複しているかどうかのフラグ
    boolean butting = false; // 重複しているか

    for (int i = 0; i < groups.size(); i++) {
      ChatGroup_345387 aGroup = (ChatGroup_345387) groups.get(i);
      // 重複していればフラグを true にする
      if (groupName.equalsIgnoreCase(aGroup.getGroupName())) butting = true;
    }

    // 重複していなければ、グループ作成処理を行う
    if (butting == false) {
      // インスタンスを作成
      ChatGroup_345387 newGroup = new ChatGroup_345387(groupName, myHandler, clients);

      // Map にも情報追加
      groups.put(groupNum, newGroup);
      groupNum++;

      // 報告
      myHandler.send("グループを作成しました  グループ名「" + groupName + "」");
      System.out.println(myHandler.getClientName() + ": create " + groupName);
    }
    // 重複していれば、エラーメッセージを返す。
    else {
      myHandler.send("そのグループ名は既に存在しています");
    }

    return true;
  }
  public boolean perform(
      String[] strings,
      List clients,
      List rejectList,
      Map groups,
      ChatClientHandler_345387 myHandler)
      throws IOException {

    // 引数なし reject
    if (strings.length == 1) {
      // 拒否リストに居るユーザの名前一覧
      List names = new ArrayList();

      // 自分の現在の拒否リストから順番に名前を names リストに追加する。
      for (int i = 0; i < rejectList.size(); i++) {
        ChatClientHandler_345387 rejHandler = (ChatClientHandler_345387) rejectList.get(i);
        names.add(rejHandler.getClientName());
      }

      // names リストをソートして、自分に拒否リストの一覧を送る。
      String returnMessage = "";
      Collections.sort(names);
      for (int i = 0; i < names.size(); i++) {
        returnMessage += names.get(i) + ",";
      }
      myHandler.send("<拒否リストの一覧>");
      myHandler.send(returnMessage);
    }

    // 引数有り reject
    else {
      String rejectName = strings[1];
      // 削除操作を行ったかどうかのフラグ
      boolean delete = false;
      // 登録操作を行ったかどうかのフラグ
      boolean regester = false;

      // 自分の拒否リストの中を順に見てゆき、
      // 引数指定の名前を持つハンドラが拒否リストにあれば(既に登録されていれば)、削除する。
      for (int i = 0; i < rejectList.size(); i++) {
        ChatClientHandler_345387 handler = (ChatClientHandler_345387) rejectList.get(i);

        // 既に拒否リストに登録されていたら
        if ((handler.name).equalsIgnoreCase(rejectName)) {
          // 拒否リストから削除
          rejectList.remove(handler);
          delete = true; // フラグを true に -> 今回、登録操作は行わない。
          // 報告
          myHandler.send(rejectName + "を拒否リストから削除しました。");
          System.out.println(myHandler.getClientName() + ": reject: " + rejectName + "を削除");
        }
      }

      // 削除を行わない場合、登録を行う。
      if (delete == false) {
        // まずは、引数で与えられた名前がクライアントリストに存在するかを一応チェック
        // -> 存在すれば、拒否リストに追加する。
        for (int i = 0; i < clients.size(); i++) {
          ChatClientHandler_345387 handler = (ChatClientHandler_345387) clients.get(i);

          // 引数で与えられた名前がクライアントに存在すれば、
          if ((handler.name).equalsIgnoreCase(rejectName)) {
            // 拒否リストへ登録する
            rejectList.add(handler);
            regester = true; // フラグをtrueに
            // 報告
            myHandler.send(rejectName + "を拒否リストへ登録しました。");
            System.out.println(myHandler.getClientName() + ": reject: " + rejectName + "を登録");
          }
        }

        // 登録できない(名前が存在しない)場合は、エラーメッセージを返送
        if (regester == false) myHandler.send("存在しない名前です");
      }

      // コマンドが成功した(登録、削除のどちらかが行われた)場合は現在の拒否リストの一覧を返す
      if (regester == true || delete == true) {
        // 拒否リストに居るユーザの名前一覧
        List names = new ArrayList();

        // 自分の現在の拒否リストから順番に名前を names リストに追加する。
        for (int i = 0; i < rejectList.size(); i++) {
          ChatClientHandler_345387 rejHandler = (ChatClientHandler_345387) rejectList.get(i);
          names.add(rejHandler.getClientName());
        }

        // names リストをソートして、自分に拒否リストの一覧を送る。
        String returnMessage = "";
        Collections.sort(names);
        for (int i = 0; i < names.size(); i++) {
          returnMessage += names.get(i) + ",";
        }
        myHandler.send("<拒否リストの一覧>");
        myHandler.send(returnMessage);
      }
    }

    return true;
  }