package com.basgeekball.awesomevalidation; import android.support.design.widget.TextInputLayout; import android.widget.EditText; import com.basgeekball.awesomevalidation.exception.BadLayoutException; import com.basgeekball.awesomevalidation.model.NumericRange; import java.util.regex.Pattern; public class ValidationHolder { private EditText mEditText; private EditText mConfirmationEditText; private TextInputLayout mTextInputLayout; private TextInputLayout mConfirmationTextInputLayout; private Pattern mPattern; private NumericRange mNumericRange; private String mErrMsg; public ValidationHolder(EditText editText, Pattern pattern, String errMsg) { mEditText = editText; mPattern = pattern; mErrMsg = errMsg; } public ValidationHolder(EditText editText, NumericRange numericRange, String errMsg) { mEditText = editText; mNumericRange = numericRange; mErrMsg = errMsg; } public ValidationHolder(EditText confirmationEditText, EditText editText, String errMsg) { mConfirmationEditText = confirmationEditText; mEditText = editText; mErrMsg = errMsg; } public ValidationHolder(TextInputLayout textInputLayout, Pattern pattern, String errMsg) { mTextInputLayout = textInputLayout; mPattern = pattern; mErrMsg = errMsg; } public ValidationHolder(TextInputLayout textInputLayout, NumericRange numericRange, String errMsg) { mTextInputLayout = textInputLayout; mNumericRange = numericRange; mErrMsg = errMsg; } public ValidationHolder(TextInputLayout confirmationTextInputLayout, TextInputLayout textInputLayout, String errMsg) { mConfirmationTextInputLayout = confirmationTextInputLayout; mTextInputLayout = textInputLayout; mErrMsg = errMsg; } public boolean isRegexType() { return mPattern != null; } public boolean isRangeType() { return mNumericRange != null; } public boolean isConfirmationType() { return mConfirmationEditText != null || mConfirmationTextInputLayout != null; } public boolean isEditTextStyle() { return mEditText != null; } public boolean isTextInputLayoutStyle() { return mTextInputLayout != null; } public Pattern getPattern() { return mPattern; } public NumericRange getNumericRange() { return mNumericRange; } public String getErrMsg() { return mErrMsg; } public String getText() { if (mEditText != null) { return mEditText.getText().toString(); } else if (mTextInputLayout != null) { EditText editText = mTextInputLayout.getEditText(); if (editText != null) { return editText.getText().toString(); } throw new BadLayoutException("EditText must be present inside TextInputLayout."); } else { return null; } } public String getConfirmationText() { if (mConfirmationEditText != null) { return mConfirmationEditText.getText().toString(); } else if (mConfirmationTextInputLayout != null) { EditText editText = mConfirmationTextInputLayout.getEditText(); if (editText != null) { return editText.getText().toString(); } throw new BadLayoutException("EditText must be present inside TextInputLayout."); } else { return null; } } public EditText getEditText() { if (isEditTextStyle()) { return isConfirmationType() ? mConfirmationEditText : mEditText; } else if (isTextInputLayoutStyle()) { return isConfirmationType() ? mConfirmationTextInputLayout.getEditText() : mTextInputLayout.getEditText(); } else { return null; } } public TextInputLayout getTextInputLayout() { if (isTextInputLayoutStyle()) { return isConfirmationType() ? mConfirmationTextInputLayout : mTextInputLayout; } else { return null; } } }