Skip to content

Commit 671bfa8

Browse files
committed
feat: add CreateFieldRequestBuilder
1 parent f110aa8 commit 671bfa8

5 files changed

Lines changed: 185 additions & 0 deletions

File tree

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package cn.vika.client.api.model.builder;
2+
3+
import cn.vika.client.api.model.CreateFieldRequest;
4+
import cn.vika.client.api.model.field.FieldType;
5+
import cn.vika.client.api.model.field.property.BaseFieldProperty;
6+
7+
/**
8+
* @author tao
9+
*/
10+
public class CreateFieldRequestBuilder{
11+
12+
public static IFieldTypeOfCreateField create() {
13+
return new FieldTypeOfCreateField(new ContextOfCreateField());
14+
}
15+
16+
}
17+
18+
class ContextOfCreateField {
19+
private FieldType fieldType;
20+
private String name;
21+
private BaseFieldProperty property;
22+
23+
public FieldType getFieldType() {
24+
return fieldType;
25+
}
26+
27+
public void setFieldType(FieldType fieldType) {
28+
this.fieldType = fieldType;
29+
}
30+
31+
public String getName() {
32+
return name;
33+
}
34+
35+
public void setName(String name) {
36+
this.name = name;
37+
}
38+
39+
public BaseFieldProperty getProperty() {
40+
return property;
41+
}
42+
43+
public void setProperty(BaseFieldProperty property) {
44+
this.property = property;
45+
}
46+
}
47+
48+
class FieldTypeOfCreateField implements IFieldTypeOfCreateField {
49+
50+
private final ContextOfCreateField context;
51+
52+
FieldTypeOfCreateField(ContextOfCreateField context) {
53+
this.context = context;
54+
}
55+
56+
@Override
57+
public INameOfCreateField ofType(FieldType fieldType) {
58+
context.setFieldType(fieldType);
59+
return new NameOfCreateField(context);
60+
}
61+
62+
}
63+
64+
class NameOfCreateField implements INameOfCreateField {
65+
66+
private final ContextOfCreateField context;
67+
68+
NameOfCreateField(ContextOfCreateField context) {
69+
this.context = context;
70+
}
71+
72+
@Override
73+
public IPropertyOfCreateField withName(String name) {
74+
context.setName(name);
75+
return new PropertyOfCreateField(context);
76+
}
77+
78+
}
79+
80+
class PropertyOfCreateField implements IPropertyOfCreateField {
81+
82+
private final ContextOfCreateField context;
83+
84+
PropertyOfCreateField(ContextOfCreateField context) {
85+
this.context = context;
86+
}
87+
88+
@Override
89+
public <T extends BaseFieldProperty> IBuildCreateField<T> withProperty(T property) {
90+
91+
// TODO: 泛型正确性判断
92+
93+
context.setProperty(property);
94+
return new BuildCreateField<>(context);
95+
}
96+
97+
}
98+
99+
class BuildCreateField<T extends BaseFieldProperty> implements IBuildCreateField<T> {
100+
101+
private final ContextOfCreateField context;
102+
103+
public BuildCreateField(ContextOfCreateField context) {
104+
this.context = context;
105+
}
106+
107+
@Override
108+
public CreateFieldRequest<T> build() {
109+
CreateFieldRequest<T> fieldRequest = new CreateFieldRequest<>();
110+
fieldRequest.setType(context.getFieldType().getFieldType());
111+
fieldRequest.setName(context.getName());
112+
fieldRequest.setProperty((T) context.getProperty());
113+
return fieldRequest;
114+
}
115+
116+
}
117+
118+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cn.vika.client.api.model.builder;
2+
3+
import cn.vika.client.api.model.CreateFieldRequest;
4+
import cn.vika.client.api.model.field.property.BaseFieldProperty;
5+
6+
/**
7+
* @author tao
8+
*/
9+
public interface IBuildCreateField <T extends BaseFieldProperty> {
10+
11+
/**
12+
*
13+
* @return
14+
*/
15+
CreateFieldRequest<T> build();
16+
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cn.vika.client.api.model.builder;
2+
3+
import cn.vika.client.api.model.field.FieldType;
4+
5+
/**
6+
* @author tao
7+
*/
8+
public interface IFieldTypeOfCreateField {
9+
10+
/**
11+
*
12+
* @param fieldType
13+
* @return
14+
*/
15+
INameOfCreateField ofType(FieldType fieldType);
16+
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cn.vika.client.api.model.builder;
2+
3+
/**
4+
* @author tao
5+
*/
6+
public interface INameOfCreateField {
7+
8+
/**
9+
*
10+
* @param name
11+
* @return
12+
*/
13+
IPropertyOfCreateField withName(String name);
14+
15+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package cn.vika.client.api.model.builder;
2+
3+
import cn.vika.client.api.model.field.property.BaseFieldProperty;
4+
5+
/**
6+
* @author tao
7+
*/
8+
public interface IPropertyOfCreateField {
9+
10+
/**
11+
*
12+
* @param property
13+
* @param <T>
14+
* @return
15+
*/
16+
<T extends BaseFieldProperty> IBuildCreateField<T> withProperty(T property);
17+
18+
}

0 commit comments

Comments
 (0)