001package com.streamconverter.command.rule; 002 003/** 004 * ルールインターフェース 005 * 006 * <p>このインターフェースは、ストリーム変換のルールを定義するためのものです。 具体的なルールはこのインターフェースを実装するクラスで定義されます。 007 * ルールは、ストリーム変換の際に適用される条件や処理を定義します。 008 * 009 * <p>このインターフェースは関数型インターフェースです。ラムダ式やメソッド参照で実装できます。 010 * 011 * <p>使用例: 012 * 013 * <pre>{@code 014 * // 単純な変換ルール 015 * IRule upperCaseRule = input -> input.toUpperCase(); 016 * IRule trimRule = String::trim; 017 * 018 * // 複合ルール(トリムして大文字に変換) 019 * IRule trimAndUpperCase = input -> input.trim().toUpperCase(); 020 * 021 * // StreamConverterコマンドでの使用例 022 * IRule dataCleaningRule = input -> input.trim().replaceAll("\\s+", " "); 023 * JsonNavigateCommand command = JsonNavigateCommand.create( 024 * TreePath.fromJson("$.user.name"), 025 * dataCleaningRule 026 * ); 027 * }</pre> 028 */ 029@FunctionalInterface 030public interface IRule { 031 032 /** 033 * ルールの適用を実行します。 034 * 035 * <p>このメソッドは、ストリーム変換の際にルールを適用するために使用されます。 具体的なルールの実装は、このメソッドをオーバーライドして定義します。 036 * 変換対象とする箇所を特定したあとにこのメソッドを呼び出すことを想定しています。 037 * 038 * @param input 変換対象の文字列 039 * @return String output 変換結果を格納する文字列 040 */ 041 String apply(String input); 042}