Skip to content

Commit

Permalink
add validate order feature
Browse files Browse the repository at this point in the history
  • Loading branch information
zillachan committed Sep 18, 2017
1 parent 6e71549 commit 6d77d79
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 122 deletions.
13 changes: 9 additions & 4 deletions example/src/main/java/pub/zilla/example/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@

public class MainActivity extends AppCompatActivity {

@Reg(error = R.string.reg_error,reg = "^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$")
@NotNull(error = R.string.input_need)
@NotNull(value = 1, error = R.string.input_need)
@Reg(value = 2, error = R.string.reg_error, reg = "^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$")
@BindView(R.id.inputLayout)
TextInputLayout inputLayout;

@NotNull(value = 3, error = R.string.input_need)
@Reg(value = 4, error = R.string.reg_error, reg = "^[0-9][0-9]{5}$")
@BindView(R.id.zipcodeLayout)
TextInputLayout zipcodeLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand All @@ -33,7 +38,7 @@ public void onViewClicked() {
}

@ValiSuccess
void onValiSuccess(){
Toast.makeText(this,R.string.vali_success,Toast.LENGTH_LONG).show();
void onValiSuccess() {
Toast.makeText(this, R.string.vali_success, Toast.LENGTH_LONG).show();
}
}
51 changes: 21 additions & 30 deletions example/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,50 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="pub.zilla.example.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<android.support.design.widget.TextInputLayout
android:id="@+id/inputLayout"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/phone_number"
android:inputType="number" />
</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
android:id="@+id/zipcodeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/zip_code"
android:inputType="number" />
</android.support.design.widget.TextInputLayout>

<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/inputLayout" />
android:text="@string/validate" />

</android.support.constraint.ConstraintLayout>
</LinearLayout>
3 changes: 3 additions & 0 deletions example/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@
<string name="input_need">The field is required</string>
<string name="reg_error">reg error</string>
<string name="vali_success">Validate success.</string>
<string name="validate">Validate</string>
<string name="phone_number">Phone Number</string>
<string name="zip_code">Zip Code</string>
</resources>
42 changes: 21 additions & 21 deletions valizilla/src/main/java/pub/zilla/validzilla/ValiZilla.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;

import pub.zilla.validzilla.an.NotNull;
import pub.zilla.validzilla.an.Reg;
import pub.zilla.validzilla.an.ValiSuccess;
import pub.zilla.validzilla.model.AnnoModel;
import pub.zilla.validzilla.model.ValiModel;
import pub.zilla.validzilla.model.ValiWapper;

Expand All @@ -35,27 +34,31 @@ public static void vali(Object target) {
e.printStackTrace();
}
if (textInputLayout == null) return;
for (ValiModel model : wapper.getValiModel()) {
List<ValiModel> models = wapper.getValiModel();
Collections.sort(models, new Comparator<ValiModel>() {
@Override
public int compare(ValiModel o1, ValiModel o2) {
return o1.getOrder() - o2.getOrder();
}
});
for (ValiModel model : models) {
try {
Class fieldType = model.getField().getType();
if (textInputLayout.isAssignableFrom(fieldType)) {//if is TextInputLayout or extends from TextInputLayout.
TextInputLayout targetField = (TextInputLayout) model.getField().get(target);
String result = targetField.getEditText().getText().toString();//result
List<AnnoModel> annoModels = model.getAnnoModels();
for (AnnoModel annoModel : annoModels) {
if (TextUtils.isEmpty(annoModel.getReg())) {//not null check fail
if (TextUtils.isEmpty(result)) {
targetField.setError(targetField.getContext().getString(annoModel.getError()));
return;
} else {
targetField.setError("");
}
} else if (!result.matches(annoModel.getReg())) {// reg check fail;
targetField.setError(targetField.getContext().getString(annoModel.getError()));
if (TextUtils.isEmpty(model.getReg())) {//not null check fail
if (TextUtils.isEmpty(result)) {
targetField.setError(targetField.getContext().getString(model.getError()));
return;
} else {
targetField.setError("");
}
} else if (!result.matches(model.getReg())) {// reg check fail;
targetField.setError(targetField.getContext().getString(model.getError()));
return;
} else {
targetField.setError("");
}
}
} catch (IllegalAccessException e) {
Expand All @@ -71,7 +74,6 @@ public static void vali(Object target) {
e.printStackTrace();
}
}

}

/**
Expand Down Expand Up @@ -100,16 +102,14 @@ private static ValiWapper getFieldsFromCache(Class c) {
notNull = field.getAnnotation(NotNull.class);
reg = field.getAnnotation(Reg.class);
if (notNull != null || reg != null) {
ValiModel valiModel = new ValiModel(field);
if (notNull != null) {
AnnoModel annoModel = new AnnoModel(notNull.error(), null);
valiModel.addAnnoModel(annoModel);
ValiModel valiModel = new ValiModel(notNull.value(), notNull.error(), null, field);
wapper.addValiModel(valiModel);
}
if (reg != null) {
AnnoModel annoModel = new AnnoModel(reg.error(), reg.reg());
valiModel.addAnnoModel(annoModel);
ValiModel valiModel = new ValiModel(reg.value(), reg.error(), reg.reg(), field);
wapper.addValiModel(valiModel);
}
wapper.addValiModel(valiModel);
}
}
//Method
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
* @return
*/
// int value();
int value();

/**
* Error message
Expand Down
2 changes: 1 addition & 1 deletion valizilla/src/main/java/pub/zilla/validzilla/an/Reg.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
* @return
*/
// int value();
int value();

/**
* Error message
Expand Down
44 changes: 0 additions & 44 deletions valizilla/src/main/java/pub/zilla/validzilla/model/AnnoModel.java

This file was deleted.

62 changes: 41 additions & 21 deletions valizilla/src/main/java/pub/zilla/validzilla/model/ValiModel.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package pub.zilla.validzilla.model;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
* Validate field model
* Created by zilla on 9/15/17.
*/

public class ValiModel {
private int order;
private int error;
private String reg;

private Field field;
private List<AnnoModel> annoModels;


public ValiModel() {

Expand All @@ -22,40 +23,59 @@ public ValiModel(Field field) {
this.field = field;
}

public ValiModel(Field field, List<AnnoModel> annoModels) {
/**
* constructor
* @param order
* @param error
* @param reg
* @param field
*/
public ValiModel(int order, int error, String reg, Field field) {
this.order = order;
this.error = error;
this.reg = reg;
this.field = field;
this.annoModels = annoModels;
}

public Field getField() {
return field;
public int getOrder() {
return order;
}

public void setField(Field field) {
this.field = field;
public void setOrder(int order) {
this.order = order;
}

public int getError() {
return error;
}

public List<AnnoModel> getAnnoModels() {
return annoModels;
public void setError(int error) {
this.error = error;
}

public void setAnnoModels(List<AnnoModel> annoModels) {
this.annoModels = annoModels;
public String getReg() {
return reg;
}

public void addAnnoModel(AnnoModel annoModel) {
if (annoModels == null) {
annoModels = new ArrayList<>();
}
annoModels.add(annoModel);
public void setReg(String reg) {
this.reg = reg;
}

public Field getField() {
return field;
}

public void setField(Field field) {
this.field = field;
}

@Override
public String toString() {
return "ValiModel{" +
"field=" + field +
", annoModels=" + annoModels +
"order=" + order +
", error=" + error +
", reg='" + reg + '\'' +
", field=" + field +
'}';
}
}

0 comments on commit 6d77d79

Please sign in to comment.