0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

エラーメッセージ出す処理

Posted at

##エラーメッセージ出す処理

なんか便利そうなの思いついたので備忘録に

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にならして、かぶりを排除って処理ですね

わりといい感じなのでは

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?