Skip to content

Commit bfae5ee

Browse files
committed
#2108 add TableDefBuilder in vuu-java
1 parent 7c89570 commit bfae5ee

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package org.finos.vuu.util;
2+
3+
import org.finos.vuu.api.*;
4+
import org.finos.vuu.core.filter.type.PermissionFilter;
5+
import org.finos.vuu.core.table.Column;
6+
import org.finos.vuu.core.table.TableContainer;
7+
import org.finos.vuu.net.SortSpec;
8+
import org.finos.vuu.viewport.ViewPort;
9+
import scala.Function2;
10+
11+
import java.util.List;
12+
13+
import static org.finos.vuu.util.ScalaCollectionConverter.toScala;
14+
import static org.finos.vuu.util.ScalaCollectionConverter.toScalaSeq;
15+
16+
public class TableDefBuilder {
17+
private String name;
18+
private String keyField;
19+
private Column[] customColumns;
20+
private List<String> joinFields;
21+
private Boolean autoSubscribe;
22+
private List<Link> links;
23+
private List<String> indexFields;
24+
private TableVisibility visibility;
25+
private Boolean includeDefaultColumns;
26+
private Function2<ViewPort, TableContainer, PermissionFilter> permissionFunction;
27+
private SortSpec defaultSort;
28+
29+
public TableDefBuilder name(String name) {
30+
this.name = name;
31+
return this;
32+
}
33+
34+
public TableDefBuilder keyField(String keyField) {
35+
this.keyField = keyField;
36+
return this;
37+
}
38+
39+
public TableDefBuilder customColumns(Column[] customColumns) {
40+
this.customColumns = customColumns;
41+
return this;
42+
}
43+
44+
public TableDefBuilder joinFields(List<String> joinFields) {
45+
this.joinFields = joinFields;
46+
return this;
47+
}
48+
49+
public TableDefBuilder autosubscribe(Boolean autosubscribe) {
50+
this.autoSubscribe = autosubscribe;
51+
return this;
52+
}
53+
54+
public TableDefBuilder links(List<Link> links) {
55+
this.links = links;
56+
return this;
57+
}
58+
59+
public TableDefBuilder indexFields(List<String> indexFields) {
60+
this.indexFields = indexFields;
61+
return this;
62+
}
63+
64+
public TableDefBuilder visibility(TableVisibility visibility) {
65+
this.visibility = visibility;
66+
return this;
67+
68+
}
69+
70+
public TableDefBuilder withPrivateVisibility() {
71+
this.visibility = TableVisibility$.MODULE$.PRIVATE();
72+
return this;
73+
}
74+
75+
public TableDefBuilder withPublicVisibility() {
76+
this.visibility = TableVisibility$.MODULE$.PUBLIC();
77+
return this;
78+
}
79+
80+
public TableDefBuilder includeDefaultColumns(Boolean includeDefaultColumns) {
81+
this.includeDefaultColumns = includeDefaultColumns;
82+
return this;
83+
84+
}
85+
86+
public TableDefBuilder permissionFunction(Function2<ViewPort, TableContainer, PermissionFilter> permissionFunction) {
87+
this.permissionFunction = permissionFunction;
88+
return this;
89+
}
90+
91+
public TableDefBuilder defaultSort(SortSpec defaultSort) {
92+
this.defaultSort = defaultSort;
93+
return this;
94+
95+
}
96+
97+
public TableDef build() {
98+
return new TableDef(
99+
name,
100+
keyField,
101+
customColumns,
102+
toScalaSeq(joinFields),
103+
autoSubscribe,
104+
new VisualLinks(toScala(links)),
105+
Indices.apply(toScalaSeq(indexFields.stream().map(Index::apply).toList())),
106+
visibility,
107+
includeDefaultColumns,
108+
permissionFunction,
109+
defaultSort);
110+
}
111+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.finos.vuu.util;
2+
3+
import org.finos.vuu.api.Link;
4+
import org.finos.vuu.api.TableDef;
5+
import org.finos.vuu.core.table.Column;
6+
import org.finos.vuu.core.table.SimpleColumn;
7+
import org.finos.vuu.net.SortDef;
8+
import org.finos.vuu.net.SortSpec;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.util.List;
12+
13+
import static org.finos.vuu.util.ScalaCollectionConverter.toScala;
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
16+
class TableDefBuilderTest {
17+
18+
@Test
19+
void buildWithAllParameters() {
20+
TableDef tableDef = new TableDefBuilder()
21+
.name("myTable")
22+
.keyField("myKey")
23+
.customColumns(new Column[]{new SimpleColumn("myColumn", 0, String.class)})
24+
.joinFields(List.of("myJoinField"))
25+
.autosubscribe(true)
26+
.links(List.of(new Link("fromColumn", "toTable", "toColumn")))
27+
.indexFields(List.of("myIndex"))
28+
.withPrivateVisibility()
29+
.includeDefaultColumns(false)
30+
.permissionFunction(null)
31+
.defaultSort(new SortSpec(toScala(List.of(new SortDef("myColumn", 'D')))))
32+
.build();
33+
34+
assertEquals("myTable", tableDef.name());
35+
36+
}
37+
38+
}

0 commit comments

Comments
 (0)