package alm.motiv.AlmendeMotivator;
import android.widget.EditText;
import java.util.regex.Pattern;
/**
* Created by AsterLaptop on 4/5/14.
*/
public class Validation {
// Regular Expression
private static final String NUMERIC_REGEX = "^[1-8][0-9]$";
private static final String NUMERIC_MSG_NO_LIMITATIONS = "^[0-9]*$";
private static final String CHAR_REGEX = "^[^\\n]{1,500}$";
private static final String TITLE_REGEX = "^[^\\n]{3,30}$";
// Error Messages
private static final String REQUIRED_MSG = "This field cannot be empty";
private static final String NUMERIC_MSG_AGE = "Only numbers are allowed, age between 10 and 89";
private static final String CHAR_MSG = "Don't use more than 500 characters";
private static final String ENTER_MSG = "Don't use enter(s)";
private static final String NUMERIC_MSG = "Please enter 2 numbers. Example: 08 hours per week";
private static final String TITLE_MSG = "Please enter 3 - 30 characters";
// call this method when you need to check email validation
public static boolean isNumeric(EditText editText, boolean required) {
if(editText.getText().toString().contains("\n")){
editText.setError(ENTER_MSG);
return false;
}
return isValid(editText, NUMERIC_REGEX, NUMERIC_MSG_AGE, required);
}
public static boolean isTitle(EditText editText, boolean required) {
if(editText.getText().toString().contains("\n")){
editText.setError(ENTER_MSG);
return false;
}
return isValid(editText, TITLE_REGEX, TITLE_MSG, required);
}
public static boolean isNumericWithoutLimitations(EditText editText, boolean required) {
if(editText.getText().toString().contains("\n")){
editText.setError(ENTER_MSG);
return false;
}
return isValid(editText, NUMERIC_MSG_NO_LIMITATIONS, NUMERIC_MSG, required);
}
public static boolean isLetters(EditText editText, boolean required) {
if(editText.getText().toString().contains("\n")){
editText.setError(ENTER_MSG);
return false;
}
return isValid(editText, CHAR_REGEX, CHAR_MSG, required);
}
// return true if the input field is valid, based on the parameter passed
public static boolean isValid(EditText editText, String regex, String errMsg, boolean required) {
String text = editText.getText().toString().trim();
// clearing the error, if it was previously set by some other values
editText.setError(null);
// text required and editText is blank, so return false
if ( required && !hasText(editText) ) return false;
// pattern doesn't match so returning false
if (required && !Pattern.matches(regex, text)) {
System.out.println(Pattern.matches(regex, text));
editText.setError(errMsg);
return false;
};
return true;
}
// check the input field has any text or not
// return true if it contains text otherwise false
public static boolean hasText(EditText editText) {
String text = editText.getText().toString().trim();
editText.setError(null);
if(editText.getText().toString().contains("\n")){
editText.setError(ENTER_MSG);
return false;
}
// length 0 means there is no text
if (text.length() == 0) {
editText.setError(REQUIRED_MSG);
return false;
}
return true;
}
}