package com.sunxung.factoring.component.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @className:ExcelField
 * @description:Excel字段属性注解类
 * @author:杜小姣
 * @e-mail:1261237207@qq.com
 * @date:2018年4月9日 上午11:58:14
 */
@Target({
        ElementType.FIELD
})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {

    /** 当前属性仅导出 */
    boolean exportOnly() default false;

    /** 当前属性仅导入 */
    boolean importOnly() default false;

    /** 当前属性在Excel中的位置,从0开始,属性优先于cellAt */
    int exportCellAt() default -1;

    /** 当前属性在Excel中的位置,从0开始,属性优先于cellAt */
    int importCellAt() default -1;

    /** 是否不可为空 */
    boolean isNotNull() default false;

    /** 合法值列表(int) */
    int[] valueOfInteger() default {};

    /** 合法值区间(int)如不为空，只能有两个元素，即最小值(含)和最大值(含) */
    int[] sectionOfInteger() default {};

    /** 合法值列表(String) */
    String[] valueOfString() default {};

    /** 合法值列表(double) */
    double[] valueOfDouble() default {};

    /** 合法值区间(double)如不为空，只能有两个元素，即最小值(含)和最大值(含) */
    double[] sectionOfDouble() default {};

    /** 当前属性在Excel中的位置,从0开始 */
    int cellAt();

    /** 默认日期格式化方式 */
    String dateFormat() default "yyyy-MM-dd hh:mm:ss";

    /**
     * <h4>是否需要自定义格式化，如需要需提供 属性名+EnCode() 方法,返回值为String型(用以导出)</h4>
     * <h4>并定义反格式化方法 属性名+DeCode(String arg) 方法, 返回值为当前字段类型(用以导入)</h4>
     */
    boolean format() default false;
}
