app第一阶段冲刺第九天

作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16192585.html


 

字符串加载器

复制代码
package com.linlang.grasharepro.utils.validation;

/**
 * 字符串加载器
 */
public abstract class TextLazyLoader implements LazyLoader{
    @Override
    public final Long loadInt() {
        return null;
    }

    @Override
    public final Double loadFloat() {
        return null;
    }
}
复制代码

 

复制代码
package com.linlang.grasharepro.utils.validation;

import android.widget.TextView;

/**
 * TextView Text value Loader
 */
public class TextViewLoader implements LazyLoader{

    private final TextView mTextView;

    public TextViewLoader(TextView textView) {
        mTextView = textView;
    }

    @Override
    public Long loadInt() {
        return null;
    }

    @Override
    public Double loadFloat() {
        return null;
    }

    @Override
    public String loadString() {
        return String.valueOf(mTextView.getText());
    }
}
复制代码

 

 

复制代码
package com.linlang.grasharepro.utils.validation;


class ValuePatternMeta extends PatternMeta<ValuePattern> {

    final LazyLoader lazyLoader;

    ValueType valueType;
    String minValue;
    String maxValue;
    String value;

    ValuePatternMeta(ValuePattern pattern, String message, int messageId, LazyLoader lazyLoader, ValueType valueType, String minValue, String maxValue, String value) {
        super(pattern, message, messageId);
        this.lazyLoader = lazyLoader;
        this.valueType = valueType;
        this.minValue = minValue;
        this.maxValue = maxValue;
        this.value = value;
    }


    private void setValue(String value){
        valueType = ValueType.String;
        syncValue(value);
    }

    private void setValue(long value){
        valueType = ValueType.Int;
        syncValue(value);
    }

    private void setValue(double value){
        valueType = ValueType.Float;
        syncValue(value);
    }

    private void syncValue(Object value){
        this.value = String.valueOf(value);
        this.minValue = this.value;
    }

    void performLazyLoader(){
        if (lazyLoader == null) {
            return;
        }
        final String stringValue = lazyLoader.loadString();
        final Long longValue = lazyLoader.loadInt();
        final Double floatValue = lazyLoader.loadFloat();
        if (stringValue != null){
            setValue(stringValue);
        }
        else if (longValue != null){
            setValue(longValue);
        }
        else if (floatValue != null){
            setValue(floatValue);
        }
    }

    String getMessage() {
        if (this.message == null){
                return null;
        }
        String message = this.message;
        if (minValue != null) {
            message = message.replace("{0}", minValue);
        }

        if (maxValue != null) {
            message = message.replace("{1}", maxValue);
        }
        return message;
    }

     static ValuePatternMeta parse(ValuePattern pattern){
        return new ValuePatternMeta(pattern,
                pattern.getMessage(),
                pattern.getMessageId(),
                pattern.getLazyLoader(),
                pattern.getValueType(),
                pattern.getMinValue(),
                pattern.getMaxValue(),
                pattern.getValue());
    }

    @Override
    public String toString() {
        return "{" +
                "pattern=" + pattern.name() +
                ", messageId=" + messageId +
                ", message='" + message + '\'' +
                ", lazyLoader=" + lazyLoader +
                ", valueType=" + valueType +
                ", minValue='" + minValue + '\'' +
                ", maxValue='" + maxValue + '\'' +
                ", value='" + value + '\'' +
                '}';
    }
}
复制代码

 

 

复制代码
package com.linlang.grasharepro.utils.validation;

/**
 * Value type
 */
enum ValueType{
    Float,
    Int,
    String
}
复制代码

 

 

明天写数值匹配模式,然后相应的模式调用文件

 

posted @   kuaiquxie  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示