app第一阶段冲刺第九天
字符串加载器
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 }
明天写数值匹配模式,然后相应的模式调用文件