Skip to content

Commit 3952194

Browse files
ModelBuilder: extract constants, restore version API, order as used
Also drop braces on conditionals where they weren't for readability. Reduce visibility if possible.
1 parent da727c7 commit 3952194

File tree

1 file changed

+65
-65
lines changed

1 file changed

+65
-65
lines changed

objectbox-java/src/main/java/io/objectbox/ModelBuilder.java

Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,19 @@
3838
// Note: IdUid is a struct, not a table, and thus must be inlined
3939

4040
/**
41-
* Builds a flatbuffer representation of the database model to be passed when opening a store.
41+
* Builds a flatbuffer representation of the database model to be passed to {@link BoxStoreBuilder}.
4242
* <p>
4343
* This is an internal API that should only be called by the generated MyObjectBox code.
4444
*/
4545
@Internal
4646
public class ModelBuilder {
47-
private static final int MODEL_VERSION = 2;
47+
private static final String DEFAULT_MODEL_NAME = "default";
48+
private static final int DEFAULT_MODEL_VERSION = 2;
4849

4950
private final FlatBufferBuilder fbb = new FlatBufferBuilder();
5051
private final List<Integer> entityOffsets = new ArrayList<>();
5152

52-
private long version = 1;
53+
private long version = DEFAULT_MODEL_VERSION;
5354

5455
private Integer lastEntityId;
5556
private Long lastEntityUid;
@@ -104,28 +105,37 @@ public final int finish() {
104105

105106
public static class PropertyBuilder extends PartBuilder {
106107

107-
private final int type;
108-
private final int virtualTargetOffset;
109108
private final int propertyNameOffset;
110109
private final int targetEntityOffset;
110+
private final int virtualTargetOffset;
111+
private final int type;
111112

112113
private int secondaryNameOffset;
113-
private int flags;
114114
private int id;
115115
private long uid;
116116
private int indexId;
117117
private long indexUid;
118118
private int indexMaxValueLength;
119-
private int externalPropertyType;
119+
private int externalType;
120120
private int hnswParamsOffset;
121+
private int flags;
121122

122123
private PropertyBuilder(FlatBufferBuilder fbb, String name, @Nullable String targetEntityName,
123124
@Nullable String virtualTarget, int type) {
124125
super(fbb);
125-
this.type = type;
126126
propertyNameOffset = fbb.createString(name);
127127
targetEntityOffset = targetEntityName != null ? fbb.createString(targetEntityName) : 0;
128128
virtualTargetOffset = virtualTarget != null ? fbb.createString(virtualTarget) : 0;
129+
this.type = type;
130+
}
131+
132+
/**
133+
* Sets the Java name of a renamed property when using {@link io.objectbox.annotation.NameInDb}.
134+
*/
135+
public PropertyBuilder secondaryName(String secondaryName) {
136+
checkNotFinished();
137+
secondaryNameOffset = getFbb().createString(secondaryName);
138+
return this;
129139
}
130140

131141
public PropertyBuilder id(int id, long uid) {
@@ -153,9 +163,9 @@ public PropertyBuilder indexMaxValueLength(int indexMaxValueLength) {
153163
*
154164
* @return this builder.
155165
*/
156-
public PropertyBuilder externalType(int externalPropertyType) {
166+
public PropertyBuilder externalType(int externalType) {
157167
checkNotFinished();
158-
this.externalPropertyType = externalPropertyType;
168+
this.externalType = externalType;
159169
return this;
160170
}
161171

@@ -204,31 +214,23 @@ public PropertyBuilder hnswParams(long dimensions,
204214
return this;
205215
}
206216

217+
/**
218+
* One or more of {@link io.objectbox.model.PropertyFlags}.
219+
*/
207220
public PropertyBuilder flags(int flags) {
208221
checkNotFinished();
209222
this.flags = flags;
210223
return this;
211224
}
212225

213-
public PropertyBuilder secondaryName(String secondaryName) {
214-
checkNotFinished();
215-
secondaryNameOffset = getFbb().createString(secondaryName);
216-
return this;
217-
}
218-
219226
@Override
220227
public int createFlatBufferTable(FlatBufferBuilder fbb) {
221228
ModelProperty.startModelProperty(fbb);
222229
ModelProperty.addName(fbb, propertyNameOffset);
223-
if (targetEntityOffset != 0) {
224-
ModelProperty.addTargetEntity(fbb, targetEntityOffset);
225-
}
226-
if (virtualTargetOffset != 0) {
227-
ModelProperty.addVirtualTarget(fbb, virtualTargetOffset);
228-
}
229-
if (secondaryNameOffset != 0) {
230-
ModelProperty.addNameSecondary(fbb, secondaryNameOffset);
231-
}
230+
if (targetEntityOffset != 0) ModelProperty.addTargetEntity(fbb, targetEntityOffset);
231+
if (virtualTargetOffset != 0) ModelProperty.addVirtualTarget(fbb, virtualTargetOffset);
232+
ModelProperty.addType(fbb, type);
233+
if (secondaryNameOffset != 0) ModelProperty.addNameSecondary(fbb, secondaryNameOffset);
232234
if (id != 0) {
233235
int idOffset = IdUid.createIdUid(fbb, id, uid);
234236
ModelProperty.addId(fbb, idOffset);
@@ -237,19 +239,10 @@ public int createFlatBufferTable(FlatBufferBuilder fbb) {
237239
int indexIdOffset = IdUid.createIdUid(fbb, indexId, indexUid);
238240
ModelProperty.addIndexId(fbb, indexIdOffset);
239241
}
240-
if (indexMaxValueLength > 0) {
241-
ModelProperty.addMaxIndexValueLength(fbb, indexMaxValueLength);
242-
}
243-
if (externalPropertyType != 0) {
244-
ModelProperty.addExternalType(fbb, externalPropertyType);
245-
}
246-
if (hnswParamsOffset != 0) {
247-
ModelProperty.addHnswParams(fbb, hnswParamsOffset);
248-
}
249-
ModelProperty.addType(fbb, type);
250-
if (flags != 0) {
251-
ModelProperty.addFlags(fbb, flags);
252-
}
242+
if (indexMaxValueLength > 0) ModelProperty.addMaxIndexValueLength(fbb, indexMaxValueLength);
243+
if (externalType != 0) ModelProperty.addExternalType(fbb, externalType);
244+
if (hnswParamsOffset != 0) ModelProperty.addHnswParams(fbb, hnswParamsOffset);
245+
if (flags != 0) ModelProperty.addFlags(fbb, flags);
253246
return ModelProperty.endModelProperty(fbb);
254247
}
255248
}
@@ -261,7 +254,8 @@ public static class RelationBuilder extends PartBuilder {
261254
private final long relationUid;
262255
private final int targetEntityId;
263256
private final long targetEntityUid;
264-
private int externalPropertyType;
257+
258+
private int externalType;
265259

266260
private RelationBuilder(FlatBufferBuilder fbb, String name, int relationId, long relationUid,
267261
int targetEntityId, long targetEntityUid) {
@@ -278,9 +272,9 @@ private RelationBuilder(FlatBufferBuilder fbb, String name, int relationId, long
278272
*
279273
* @return this builder.
280274
*/
281-
public RelationBuilder externalType(int externalPropertyType) {
275+
public RelationBuilder externalType(int externalType) {
282276
checkNotFinished();
283-
this.externalPropertyType = externalPropertyType;
277+
this.externalType = externalType;
284278
return this;
285279
}
286280

@@ -294,30 +288,27 @@ public int createFlatBufferTable(FlatBufferBuilder fbb) {
294288
ModelRelation.addId(fbb, relationIdOffset);
295289
int targetEntityIdOffset = IdUid.createIdUid(fbb, targetEntityId, targetEntityUid);
296290
ModelRelation.addTargetEntityId(fbb, targetEntityIdOffset);
297-
if (externalPropertyType != 0) {
298-
ModelRelation.addExternalType(fbb, externalPropertyType);
299-
}
291+
if (externalType != 0) ModelRelation.addExternalType(fbb, externalType);
300292
return ModelRelation.endModelRelation(fbb);
301293
}
302294
}
303295

304296
public static class EntityBuilder extends PartBuilder {
305297

306298
private final ModelBuilder model;
307-
final String name;
308-
final List<Integer> propertyOffsets = new ArrayList<>();
309-
final List<Integer> relationOffsets = new ArrayList<>();
310-
311-
Integer id;
312-
Long uid;
313-
Integer flags;
314-
Integer lastPropertyId;
315-
Long lastPropertyUid;
316-
@Nullable PropertyBuilder propertyBuilder;
317-
@Nullable RelationBuilder relationBuilder;
318-
boolean finished;
319-
320-
EntityBuilder(ModelBuilder model, FlatBufferBuilder fbb, String name) {
299+
private final String name;
300+
private final List<Integer> propertyOffsets = new ArrayList<>();
301+
private final List<Integer> relationOffsets = new ArrayList<>();
302+
303+
private Integer id;
304+
private Long uid;
305+
private Integer lastPropertyId;
306+
private Long lastPropertyUid;
307+
private Integer flags;
308+
@Nullable private PropertyBuilder propertyBuilder;
309+
@Nullable private RelationBuilder relationBuilder;
310+
311+
private EntityBuilder(ModelBuilder model, FlatBufferBuilder fbb, String name) {
321312
super(fbb);
322313
this.model = model;
323314
this.name = name;
@@ -337,6 +328,9 @@ public EntityBuilder lastPropertyId(int lastPropertyId, long lastPropertyUid) {
337328
return this;
338329
}
339330

331+
/**
332+
* One or more of {@link io.objectbox.model.EntityFlags}.
333+
*/
340334
public EntityBuilder flags(int flags) {
341335
this.flags = flags;
342336
return this;
@@ -350,6 +344,14 @@ public PropertyBuilder property(String name, @Nullable String targetEntityName,
350344
return property(name, targetEntityName, null, type);
351345
}
352346

347+
/**
348+
* @param name The name of this property in the database.
349+
* @param targetEntityName For {@link io.objectbox.model.PropertyType#Relation}, the name of the target entity.
350+
* @param virtualTarget For {@link io.objectbox.model.PropertyType#Relation}, if this property does not really
351+
* exist in the source code and is a virtual one, the name of the field this is based on that actually exists.
352+
* Currently used for ToOne fields that create virtual target ID properties.
353+
* @param type The {@link io.objectbox.model.PropertyType}.
354+
*/
353355
public PropertyBuilder property(String name, @Nullable String targetEntityName, @Nullable String virtualTarget,
354356
int type) {
355357
checkNotFinished();
@@ -392,12 +394,12 @@ public ModelBuilder entityDone() {
392394

393395
@Override
394396
public int createFlatBufferTable(FlatBufferBuilder fbb) {
395-
int testEntityNameOffset = fbb.createString(name);
397+
int nameOffset = fbb.createString(name);
396398
int propertiesOffset = model.createVector(propertyOffsets);
397399
int relationsOffset = relationOffsets.isEmpty() ? 0 : model.createVector(relationOffsets);
398400

399401
ModelEntity.startModelEntity(fbb);
400-
ModelEntity.addName(fbb, testEntityNameOffset);
402+
ModelEntity.addName(fbb, nameOffset);
401403
ModelEntity.addProperties(fbb, propertiesOffset);
402404
if (relationsOffset != 0) ModelEntity.addRelations(fbb, relationsOffset);
403405
if (id != null && uid != null) {
@@ -408,9 +410,7 @@ public int createFlatBufferTable(FlatBufferBuilder fbb) {
408410
int idOffset = IdUid.createIdUid(fbb, lastPropertyId, lastPropertyUid);
409411
ModelEntity.addLastPropertyId(fbb, idOffset);
410412
}
411-
if (flags != null) {
412-
ModelEntity.addFlags(fbb, flags);
413-
}
413+
if (flags != null) ModelEntity.addFlags(fbb, flags);
414414
return ModelEntity.endModelEntity(fbb);
415415
}
416416

@@ -452,11 +452,11 @@ public ModelBuilder lastRelationId(int lastRelationId, long lastRelationUid) {
452452
}
453453

454454
public byte[] build() {
455-
int nameOffset = fbb.createString("default");
455+
int nameOffset = fbb.createString(DEFAULT_MODEL_NAME);
456456
int entityVectorOffset = createVector(entityOffsets);
457457
Model.startModel(fbb);
458458
Model.addName(fbb, nameOffset);
459-
Model.addModelVersion(fbb, MODEL_VERSION);
459+
Model.addModelVersion(fbb, version);
460460
Model.addVersion(fbb, 1);
461461
Model.addEntities(fbb, entityVectorOffset);
462462
if (lastEntityId != null) {

0 commit comments

Comments
 (0)