Skip to content

Commit b9cf3c9

Browse files
committed
Update pom and code to glob v5 to managed removal of GlobTypeLoader (introspection) and GlobTypeBuilder init change (no more incomplete GlobType)
1 parent 637e3a8 commit b9cf3c9

34 files changed

Lines changed: 173 additions & 144 deletions

pom.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<packaging>jar</packaging>
77
<artifactId>globs-view</artifactId>
88
<name>breakdown glob to create views</name>
9-
<version>4.1.0</version>
9+
<version>5.0-SNAPSHOT</version>
1010

1111
<repositories>
1212
<repository>
@@ -113,37 +113,37 @@
113113
<dependency>
114114
<groupId>org.globsframework</groupId>
115115
<artifactId>globs</artifactId>
116-
<version>4.1.0</version>
116+
<version>5.0-SNAPSHOT</version>
117117
</dependency>
118118
<dependency>
119119
<groupId>org.globsframework</groupId>
120120
<artifactId>globs-gson</artifactId>
121-
<version>4.1.0</version>
121+
<version>5.0-SNAPSHOT</version>
122122
</dependency>
123123
<dependency>
124124
<groupId>org.globsframework</groupId>
125125
<artifactId>globs-xml</artifactId>
126-
<version>4.1.0</version>
126+
<version>5.0-SNAPSHOT</version>
127127
</dependency>
128128
<dependency>
129129
<groupId>org.globsframework</groupId>
130130
<artifactId>globs-sql</artifactId>
131-
<version>4.1.0</version>
131+
<version>5.0-SNAPSHOT</version>
132132
</dependency>
133133
<dependency>
134134
<groupId>org.globsframework</groupId>
135135
<artifactId>globs-csv</artifactId>
136-
<version>4.1.0</version>
136+
<version>5.0-SNAPSHOT</version>
137137
</dependency>
138138
<dependency>
139139
<groupId>org.globsframework</groupId>
140140
<artifactId>globs-http</artifactId>
141-
<version>4.1.0</version>
141+
<version>5.0-SNAPSHOT</version>
142142
</dependency>
143143
<dependency>
144144
<groupId>org.globsframework</groupId>
145145
<artifactId>globs-commandline</artifactId>
146-
<version>4.1.0</version>
146+
<version>5.0-SNAPSHOT</version>
147147
</dependency>
148148

149149
<dependency>

src/main/java/org/globsframework/view/ViewBuilderImpl.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,18 @@ public ViewBuilderImpl(Glob dictionary, Glob viewRequestType, int maxNodeCount)
4949
GlobTypeBuilder nodeTypeBuilder = new DefaultGlobTypeBuilder("Node");
5050
nodeTypeBuilder.declareStringField(NAME);
5151
nodeTypeBuilder.declareStringField(NODE_NAME);
52-
nodeTypeBuilder.declareGlobArrayField(CHILD_FIELD_NAME, nodeTypeBuilder.unCompleteType());
53-
nodeTypeBuilder.declareGlobField(OUTPUT, outputTypeBuilder.get());
54-
breakdownType = nodeTypeBuilder.get();
55-
outputType = outputTypeBuilder.get();
52+
nodeTypeBuilder.declareGlobArrayField(CHILD_FIELD_NAME, this::getBreakdown);
53+
nodeTypeBuilder.declareGlobField(OUTPUT, this::getOutput);
54+
breakdownType = nodeTypeBuilder.build();
55+
outputType = outputTypeBuilder.build();
56+
}
57+
58+
private GlobType getOutput() {
59+
return outputType;
60+
}
61+
62+
private GlobType getBreakdown() {
63+
return breakdownType;
5664
}
5765

5866
public View createView() {

src/main/java/org/globsframework/view/filter/ViewConstraintVisitor.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.globsframework.core.metamodel.GlobType;
44
import org.globsframework.core.metamodel.fields.*;
5+
import org.globsframework.core.model.Glob;
56
import org.globsframework.core.model.globaccessor.get.GlobGetAccessor;
67
import org.globsframework.sql.constraints.Constraint;
78
import org.globsframework.sql.constraints.ConstraintVisitor;
@@ -305,7 +306,7 @@ public void visitRegularExpression(Field field, String value, boolean caseInsens
305306
}
306307

307308
private static class DataAccessOperandVisitor implements OperandVisitor {
308-
GlobGetAccessor globGetAccessor;
309+
AbstractGlobGetAccessor globGetAccessor;
309310
Field field;
310311

311312
public void visitValueOperand(ValueOperand valueOperand) {
@@ -323,4 +324,16 @@ public void visitFieldOperand(Field field) {
323324
globGetAccessor = glob -> glob.getValue(field);
324325
}
325326
}
327+
328+
public interface AbstractGlobGetAccessor extends GlobGetAccessor {
329+
@Override
330+
default boolean isSet(Glob glob) {
331+
return false;
332+
}
333+
334+
@Override
335+
default boolean isNull(Glob glob) {
336+
return getValue(glob) == null;
337+
}
338+
}
326339
}

src/main/java/org/globsframework/view/filter/model/AndFilterType.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.Arrays;
1717
import java.util.List;
1818
import java.util.function.Consumer;
19+
import java.util.function.Supplier;
1920

2021
public class AndFilterType {
2122
public static final GlobType TYPE;
@@ -27,13 +28,12 @@ public class AndFilterType {
2728

2829
static {
2930
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("AndFilter");
30-
TYPE = typeBuilder.unCompleteType();
3131
filters = typeBuilder.declareGlobUnionArrayField("filters",
32-
List.of(OrFilterType.TYPE, AndFilterType.TYPE, EqualType.TYPE, NotEqualType.TYPE,
33-
NotType.TYPE, GreaterOrEqualType.TYPE, StrictlyGreaterType.TYPE,
34-
StrictlyLessType.TYPE, LessOrEqualType.TYPE, ContainsType.TYPE, NotContainsType.TYPE, IsNullType.TYPE, IsNotNullType.TYPE));
32+
new Supplier[]{ () -> OrFilterType.TYPE, () -> AndFilterType.TYPE, () -> EqualType.TYPE, () -> NotEqualType.TYPE,
33+
() -> NotType.TYPE, () -> GreaterOrEqualType.TYPE, () -> StrictlyGreaterType.TYPE,
34+
() -> StrictlyLessType.TYPE, () -> LessOrEqualType.TYPE, () -> ContainsType.TYPE,
35+
() -> NotContainsType.TYPE, () -> IsNullType.TYPE, () -> IsNotNullType.TYPE});
3536
// GlobTypeLoaderFactory.create(AndFilterType.class)
36-
typeBuilder.complete();
3737
typeBuilder.register(WantedField.class, new WantedField() {
3838
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
3939
Arrays.stream(filter.getOrEmpty(filters))
@@ -94,5 +94,7 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
9494
}
9595
}
9696
});
97+
TYPE = typeBuilder.build();
9798
}
99+
98100
}

src/main/java/org/globsframework/view/filter/model/ContainsType.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,8 @@ public class ContainsType {
2626

2727
static {
2828
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Contains");
29-
TYPE = typeBuilder.unCompleteType();
3029
uniqueName = typeBuilder.declareStringField("uniqueName");
3130
value = typeBuilder.declareStringField("value");
32-
typeBuilder.complete();
33-
// GlobTypeLoaderFactory.create(ContainsType.class)
3431
typeBuilder.register(WantedField.class, new WantedField() {
3532
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
3633
wantedUniqueName.accept(filter.get(uniqueName));
@@ -54,5 +51,6 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
5451
throw new RuntimeException(msg);
5552
}
5653
});
54+
TYPE = typeBuilder.build();
5755
}
5856
}

src/main/java/org/globsframework/view/filter/model/EqualType.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ public class EqualType {
3030
static {
3131
// GlobTypeLoaderFactory.create(EqualType.class)
3232
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Equal");
33-
TYPE = typeBuilder.unCompleteType();
3433
uniqueName = typeBuilder.declareStringField("uniqueName");
3534
value = typeBuilder.declareStringField("value");
36-
typeBuilder.complete();
3735
typeBuilder
3836
.register(WantedField.class, new WantedField() {
3937
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
@@ -98,5 +96,6 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
9896
throw new RuntimeException(msg);
9997
}
10098
});
99+
TYPE = typeBuilder.build();
101100
}
102101
}

src/main/java/org/globsframework/view/filter/model/FilterType.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import java.util.List;
1616
import java.util.function.Consumer;
17+
import java.util.function.Supplier;
1718
import java.util.stream.Stream;
1819

1920
public class FilterType {
@@ -26,13 +27,11 @@ public class FilterType {
2627

2728
static {
2829
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Filter");
29-
TYPE = typeBuilder.unCompleteType();
3030
filter = typeBuilder.declareGlobUnionField("filter",
31-
List.of(OrFilterType.TYPE, AndFilterType.TYPE, EqualType.TYPE, NotEqualType.TYPE,
32-
GreaterOrEqualType.TYPE, StrictlyGreaterType.TYPE, NotType.TYPE,
33-
StrictlyLessType.TYPE, LessOrEqualType.TYPE, ContainsType.TYPE, NotContainsType.TYPE, IsNullType.TYPE, IsNotNullType.TYPE));
34-
typeBuilder.complete();
35-
// GlobTypeLoaderFactory.create(FilterType.class)
31+
new Supplier[]{() -> OrFilterType.TYPE, () -> AndFilterType.TYPE, () -> EqualType.TYPE, () -> NotEqualType.TYPE,
32+
() -> GreaterOrEqualType.TYPE, () -> StrictlyGreaterType.TYPE, () -> NotType.TYPE,
33+
() -> StrictlyLessType.TYPE, () -> LessOrEqualType.TYPE, () -> ContainsType.TYPE,
34+
() -> NotContainsType.TYPE, () -> IsNullType.TYPE, () -> IsNotNullType.TYPE});
3635
typeBuilder.register(WantedField.class, new WantedField() {
3736
public void wanted(Glob f, Consumer<String> wantedUniqueName) {
3837
Stream.ofNullable(f.get(filter))
@@ -70,5 +69,6 @@ public Glob rewriteOrInAnd(Glob glob) {
7069
return gl;
7170
}
7271
});
72+
TYPE = typeBuilder.build();
7373
}
7474
}

src/main/java/org/globsframework/view/filter/model/GreaterOrEqualType.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,8 @@ public class GreaterOrEqualType {
2929

3030
static {
3131
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("GreaterOrEqual");
32-
TYPE = typeBuilder.unCompleteType();
3332
uniqueName = typeBuilder.declareStringField("uniqueName");
3433
value = typeBuilder.declareStringField("value");
35-
typeBuilder.complete();
36-
37-
// GlobTypeLoaderFactory.create(GreaterOrEqualType.class)
38-
3934
typeBuilder.register(WantedField.class, new WantedField() {
4035
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
4136
wantedUniqueName.accept(filter.get(uniqueName));
@@ -105,6 +100,8 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
105100
throw new RuntimeException(msg);
106101
}
107102
});
103+
TYPE = typeBuilder.build();
104+
108105
}
109106

110107
}

src/main/java/org/globsframework/view/filter/model/IsNotNullType.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ public class IsNotNullType {
2323

2424
static {
2525
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("IsNotNull");
26-
TYPE = typeBuilder.unCompleteType();
2726
uniqueName = typeBuilder.declareStringField("uniqueName");
28-
typeBuilder.complete();
29-
// GlobTypeLoaderFactory.create(IsNotNullType.class)
3027
typeBuilder
3128
.register(WantedField.class, new WantedField() {
3229
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
@@ -43,5 +40,6 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
4340
.anyMatch(g -> g.getValue(field) != null);
4441
}
4542
});
43+
TYPE = typeBuilder.build();
4644
}
4745
}

src/main/java/org/globsframework/view/filter/model/IsNullType.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ public class IsNullType {
2323

2424
static {
2525
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("IsNull");
26-
TYPE = typeBuilder.unCompleteType();
2726
uniqueName = typeBuilder.declareStringField("uniqueName");
28-
typeBuilder.complete();
29-
3027
typeBuilder
3128
.register(WantedField.class, new WantedField() {
3229
public void wanted(Glob filter, Consumer<String> wantedUniqueName) {
@@ -43,5 +40,6 @@ public FilterImpl.IsSelected create(Glob filter, GlobType rootType, UniqueNameTo
4340
.anyMatch(g -> g.getValue(field) == null);
4441
}
4542
});
43+
TYPE = typeBuilder.build();
4644
}
4745
}

0 commit comments

Comments
 (0)