// Path: src/main/java/sample/util/JavaRegex.java
// public interface JavaRegex {
//     /** Ascii */
//     String rAscii = "^\\p{ASCII}*$";
//     /** 英字 */
//     String rAlpha = "^[a-zA-Z]*$";
//     /** 英字大文字 */
//     String rAlphaUpper = "^[A-Z]*$";
//     /** 英字小文字 */
//     String rAlphaLower = "^[a-z]*$";
//     /** 英数 */
//     String rAlnum = "^[0-9a-zA-Z]*$";
//     /** シンボル */
//     String rSymbol = "^\\p{Punct}*$";
//     /** 英数記号 */
//     String rAlnumSymbol = "^[0-9a-zA-Z\\p{Punct}]*$";
//     /** 数字 */
//     String rNumber = "^[-]?[0-9]*$";
//     /** 整数 */
//     String rNumberNatural = "^[0-9]*$";
//     /** 倍精度浮動小数点 */
//     String rDecimal = "^[-]?(\\d+)(\\.\\d+)?$";
//     // see UnicodeBlock
//     /** ひらがな */
//     String rHiragana = "^\\p{InHiragana}*$";
//     /** カタカナ */
//     String rKatakana = "^\\p{InKatakana}*$";
//     /** 半角カタカナ */
//     String rHankata = "^[｡-ﾟ]*$";
//     /** 半角文字列 */
//     String rHankaku = "^[\\p{InBasicLatin}｡-ﾟ]*$"; // ラテン文字 + 半角カタカナ
//     /** 全角文字列 */
//     String rZenkaku = "^[^\\p{InBasicLatin}｡-ﾟ]*$"; // 全角の定義を半角以外で割り切り
//     /** 漢字 */
//     String rKanji = "^[\\p{InCJKUnifiedIdeographs}々\\p{InCJKCompatibilityIdeographs}]*$";
//     /** 文字 */
//     String rWord = "^(?s).*$";
//     /** コード */
//     String rCode = "^[0-9a-zA-Z_-]*$"; // 英数 + アンダーバー + ハイフン
// }


import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import java.lang.annotation.*;
import javax.validation.*;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import sample.util.JavaRegex;
package sample.model.constraints;





/**
 * 各種カテゴリ/区分(必須)を表現する制約注釈。
 */
@Documented
@Constraint(validatedBy = {})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
@Size
@Pattern(regexp = "")
public @interface CategoryEmpty {
    String message() default "{error.domain.category}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    @OverridesAttribute(constraint = Size.class, name = "max")
    int max() default 30;

    @OverridesAttribute(constraint = Pattern.class, name = "regexp")
// Path: src/main/java/sample/util/JavaRegex.java
// public interface JavaRegex {
//     /** Ascii */
//     String rAscii = "^\\p{ASCII}*$";
//     /** 英字 */
//     String rAlpha = "^[a-zA-Z]*$";
//     /** 英字大文字 */
//     String rAlphaUpper = "^[A-Z]*$";
//     /** 英字小文字 */
//     String rAlphaLower = "^[a-z]*$";
//     /** 英数 */
//     String rAlnum = "^[0-9a-zA-Z]*$";
//     /** シンボル */
//     String rSymbol = "^\\p{Punct}*$";
//     /** 英数記号 */
//     String rAlnumSymbol = "^[0-9a-zA-Z\\p{Punct}]*$";
//     /** 数字 */
//     String rNumber = "^[-]?[0-9]*$";
//     /** 整数 */
//     String rNumberNatural = "^[0-9]*$";
//     /** 倍精度浮動小数点 */
//     String rDecimal = "^[-]?(\\d+)(\\.\\d+)?$";
//     // see UnicodeBlock
//     /** ひらがな */
//     String rHiragana = "^\\p{InHiragana}*$";
//     /** カタカナ */
//     String rKatakana = "^\\p{InKatakana}*$";
//     /** 半角カタカナ */
//     String rHankata = "^[｡-ﾟ]*$";
//     /** 半角文字列 */
//     String rHankaku = "^[\\p{InBasicLatin}｡-ﾟ]*$"; // ラテン文字 + 半角カタカナ
//     /** 全角文字列 */
//     String rZenkaku = "^[^\\p{InBasicLatin}｡-ﾟ]*$"; // 全角の定義を半角以外で割り切り
//     /** 漢字 */
//     String rKanji = "^[\\p{InCJKUnifiedIdeographs}々\\p{InCJKCompatibilityIdeographs}]*$";
//     /** 文字 */
//     String rWord = "^(?s).*$";
//     /** コード */
//     String rCode = "^[0-9a-zA-Z_-]*$"; // 英数 + アンダーバー + ハイフン
// }


// Path: src/main/java/sample/model/constraints/CategoryEmpty.java
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import java.lang.annotation.*;
import javax.validation.*;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import sample.util.JavaRegex;

package sample.model.constraints;





/**
 * 各種カテゴリ/区分(必須)を表現する制約注釈。
 */
@Documented
@Constraint(validatedBy = {})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
@Size
@Pattern(regexp = "")
public @interface CategoryEmpty {
    String message() default "{error.domain.category}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    @OverridesAttribute(constraint = Size.class, name = "max")
    int max() default 30;

    @OverridesAttribute(constraint = Pattern.class, name = "regexp")
    String regexp() default JavaRegex.rAscii;