##エラーメッセージ出す処理
なんか便利そうなの思いついたので備忘録に
ErrorMessage.java
package listTest;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
public class ErrorMessage {
public static void main(String[] args) {
// モデルのリストが入力とかされたとする
List<Model> models = new ArrayList<>();
// 検知されたエラーメッセージを全種類取得
List<String> eMsgCodes = models.stream()
.map(ErrorMessage::validationLogic)
.flatMap(Collection::stream)
.distinct()
.collect(Collectors.toList());
// メッセージコードを設定ファイルとかから変換とかして出力的な
eMsgCodes.forEach(ErrorMessage::viewErrorMessage);
}
/**
* 各要素ごとに入力値チェックをする.
* <p>
* アノテーションなどではじけないような固有判定.
*
* @param model チェック対象のモデル
* @return エラー文言のリスト
*/
private static List<String> validationLogic(Model model) {
List<String> errorMessages = new LinkedList<>();
// idが0でないエラー
if (0 != model.getId()) {
errorMessages.add("MessageCode.001");
}
// 名前が〇〇でないエラー
if (!"???".equals(model.getName())) {
errorMessages.add("MessageCode.002");
}
// アドレスが〇〇でないエラー
if (!"???".equals(model.getAddress())) {
errorMessages.add("MessageCode.003");
}
return errorMessages;
}
/**
* メッセージコードを表示用メッセージに変換して出力.
* <p>
* 設定ファイルから取得した該当文言を画面に表示する.
*
* @param msgCode メッセージコード
* @see 設定ファイル
*/
private static void viewErrorMessage(String msgCode) {
System.out.println(msgCode);
}
}
class Model {
private int id;
private String name;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
おもにここですね
ここ.java
// 検知されたエラーメッセージを全種類取得
List<String> eMsgCodes = models.stream()
.map(ErrorMessage::validationLogic)
.flatMap(Collection::stream)
.distinct()
.collect(Collectors.toList());
チェック後にエラーメッセージが複数件出るとわかっている場合
ロジック的には引数がmodelで戻り値がListになるわけで
それをすべてstreamにならして、かぶりを排除って処理ですね
わりといい感じなのでは