💬

[Salesforce] 複数選択リストをApexで扱いやすくする

2024/10/24に公開

はじめに

Apexで複数選択リストを使用するときは下記のようにセミコロン区切りのStringになっています。

A;B;C

使うときにsplitしてやればそれでいいですが、値を追加したり削除したりしたいときはちょっとめんどくさかったりします。
そんなときに使えるクラスを作ってみました

コード

private class MultiPicklist {
    private List<String> values;

    public MultiPicklist(String value) {
      if (String.isBlank(value)) {
        this.values = new List<String>();
      } else {
        this.values = value.split(';');
      }
    }

    public List<String> get() {
      return this.values;
    }

    public override String toString() {
      return String.join(this.values, ';');
    }

    public Boolean contains(String searchValue) {
      return this.values.contains(searchValue);
    }

    public List<String> add(String addValue) {
      this.values.add(addValue);
      return this.values;
    }

    public List<String> remove(String removeValue) {
      List<String> newValues = new List<String>();
      for (String value : values) {
        if (value != removeValue) {
          newValues.add(value);
        }
      }
      this.values = newValues;
      return this.values;
    }
  }

特に解説するようなところもないですが、StringをListにして扱いやすくしている感じです。
SFに戻すときのtoStringに加えて、使いそうなメソッドは一通り入っていると思います。
removeのところはもう少しかっこよく実装したいです。

おわり

Discussion