Skip to content

Commit d673020

Browse files
committed
refactoring
1 parent 9bdcebb commit d673020

File tree

5 files changed

+53
-32
lines changed

5 files changed

+53
-32
lines changed

challenger/src/main/java/uk/co/compendiumdev/challenge/apimodel/ChallengeThingifier.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import uk.co.compendiumdev.thingifier.core.domain.definitions.field.definition.Field;
1010
import uk.co.compendiumdev.thingifier.core.domain.definitions.field.definition.FieldType;
1111
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstance;
12+
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstanceCollection;
1213

1314
public class ChallengeThingifier {
1415

@@ -46,14 +47,20 @@ public void populateThingifierFrom(ChallengeDefinitions challengeDefinitions) {
4647
// create all instances from the definitions, then when we want to
4748
// set all the status codes to the specific challenger status
4849
for (ChallengeDefinitionData challenge : challengeDefinitions.getChallenges()) {
49-
challengeThingifier.getThingInstancesNamed(challengeDefn.getName(), EntityRelModel.DEFAULT_DATABASE_NAME)
50-
.createManagedInstance().
50+
EntityInstanceCollection instances = challengeThingifier.getThingInstancesNamed(challengeDefn.getName(), EntityRelModel.DEFAULT_DATABASE_NAME);
51+
createManagedInstance(instances).
5152
overrideValue("id", challenge.id).
5253
setValue("name", challenge.name).
5354
setValue("description", challenge.description);
5455
}
5556
}
5657

58+
private EntityInstance createManagedInstance(EntityInstanceCollection entityStorage) {
59+
EntityInstance instance = new EntityInstance(entityStorage.definition());
60+
entityStorage.addInstance(instance);
61+
return instance;
62+
}
63+
5764
public void populateThingifierFromStatus(ChallengerAuthData challenger){
5865

5966
ChallengerAuthData challengerToUse = challenger;

challenger/src/main/java/uk/co/compendiumdev/challenge/apimodel/TodoAPIDataPopulator.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import uk.co.compendiumdev.thingifier.core.EntityRelModel;
44
import uk.co.compendiumdev.thingifier.core.domain.definitions.ERSchema;
55
import uk.co.compendiumdev.thingifier.core.domain.instances.ERInstanceData;
6+
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstance;
67
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstanceCollection;
78
import uk.co.compendiumdev.thingifier.core.domain.datapopulator.DataPopulator;
89

@@ -26,8 +27,9 @@ public void populate(final ERSchema schema, final ERInstanceData database) {
2627
EntityInstanceCollection todo = database.getInstanceCollectionForEntityNamed("todo");
2728

2829
for(String todoItem : todos){
29-
todo.createManagedInstance().
30-
setValue("title", todoItem);
30+
EntityInstance instance = new EntityInstance(todo.definition());
31+
todo.addInstance(instance);
32+
instance.setValue("title", todoItem);
3133
}
3234
}
3335
}

challenger/src/main/java/uk/co/compendiumdev/challenge/practicemodes/simpleapi/SimpleAPITestDataPopulator.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import uk.co.compendiumdev.thingifier.core.domain.datapopulator.DataPopulator;
44
import uk.co.compendiumdev.thingifier.core.domain.definitions.ERSchema;
55
import uk.co.compendiumdev.thingifier.core.domain.instances.ERInstanceData;
6+
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstance;
67
import uk.co.compendiumdev.thingifier.core.domain.instances.EntityInstanceCollection;
78

89
import java.util.Random;
@@ -26,7 +27,7 @@ public void populate(final ERSchema schema, final ERInstanceData database) {
2627

2728
Random random = new Random();
2829
for(String type : types){
29-
items.createManagedInstance().
30+
createManagedInstance(items).
3031
setValue("type", type).
3132
setValue("numberinstock", String.valueOf(random.nextInt(20))).
3233
setValue("isbn13", randomIsbn(random)).
@@ -35,6 +36,13 @@ public void populate(final ERSchema schema, final ERInstanceData database) {
3536
}
3637
}
3738

39+
40+
private EntityInstance createManagedInstance(EntityInstanceCollection entityStorage) {
41+
EntityInstance instance = new EntityInstance(entityStorage.definition());
42+
entityStorage.addInstance(instance);
43+
return instance;
44+
}
45+
3846
private String randomIsbn(Random random){
3947

4048
String isbn13 = "xxx-x-xx-xxxxxx-x";

challenger/src/main/java/uk/co/compendiumdev/challenge/practicemodes/simulation/SimulationRoutes.java

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public SimulationRoutes(DefaultGUIHTML guiTemplates){
4545

4646
public void setUpData(){
4747
// fake the data storage
48-
this.simulation = new Thingifier();
48+
simulation = new Thingifier();
4949

5050
simulation.setDocumentation("Simulation Mode", "A simulated API, each request generates a new set of data but responses are processed by an API handler.");
51-
this.entityDefn = this.simulation.defineThing("entity", "entities");
51+
entityDefn = simulation.defineThing("entity", "entities");
5252

53-
this.entityDefn.addAsPrimaryKeyField(Field.is("id", FieldType.AUTO_INCREMENT));
54-
this.entityDefn.addFields(
53+
entityDefn.addAsPrimaryKeyField(Field.is("id", FieldType.AUTO_INCREMENT));
54+
entityDefn.addFields(
5555
Field.is("name", FieldType.STRING).
5656
makeMandatory().
5757
withValidation(new MaximumLengthValidationRule(50)).
@@ -61,22 +61,22 @@ public void setUpData(){
6161
withValidation(new MaximumLengthValidationRule(200))
6262
);
6363

64-
this.entityStorage = this.simulation.getThingInstancesNamed("entity", EntityRelModel.DEFAULT_DATABASE_NAME);
64+
entityStorage = simulation.getThingInstancesNamed("entity", EntityRelModel.DEFAULT_DATABASE_NAME);
6565

6666
for(int id=1; id<=10; id++){
6767

68-
this.entityStorage.createManagedInstance().
69-
//setValue("id", String.valueOf(id)).
70-
setValue("name", "entity number " +id);
68+
createManagedInstance(entityStorage).
69+
//setValue("id", String.valueOf(id)).
70+
setValue("name", "entity number " +id);
7171
}
7272

73-
this.entityStorage.createManagedInstance().
74-
//setValue("id", String.valueOf(id)).
75-
setValue("name", "bob");
73+
createManagedInstance(entityStorage).
74+
//setValue("id", String.valueOf(id)).
75+
setValue("name", "bob");
7676

7777
// this gives us access to the common http processing functions
78-
this.httpApi = new ThingifierHttpApi(this.simulation);
79-
this.jsonThing = new JsonThing(this.simulation.apiConfig().jsonOutput());
78+
httpApi = new ThingifierHttpApi(simulation);
79+
jsonThing = new JsonThing(simulation.apiConfig().jsonOutput());
8080

8181
apiDocDefn = new ThingifierApiDocumentationDefn();
8282
apiDocDefn.setThingifier(simulation);
@@ -108,6 +108,12 @@ public void setUpData(){
108108

109109
}
110110

111+
private EntityInstance createManagedInstance(EntityInstanceCollection entityStorage) {
112+
EntityInstance instance = new EntityInstance(entityStorage.definition());
113+
entityStorage.addInstance(instance);
114+
return instance;
115+
}
116+
111117
public void configure() {
112118

113119
setUpData();
@@ -143,14 +149,14 @@ public void configure() {
143149

144150
// process it because the request validated
145151
List<EntityInstance> instances = new ArrayList();
146-
for (EntityInstance possible : this.entityStorage.getInstances()) {
152+
for (EntityInstance possible : entityStorage.getInstances()) {
147153
if (!idsToRemove.contains(
148154
possible.getFieldValue("id").asInteger())) {
149155
instances.add(possible);
150156
}
151157
}
152158

153-
Thingifier cloned = this.simulation.cloneWithDifferentData(instances);
159+
Thingifier cloned = simulation.cloneWithDifferentData(instances);
154160
return new RestApiGetHandler(cloned).handle("entities", anHttpApiRequest.getFilterableQueryParams(), anHttpApiRequest.getHeaders());
155161

156162
};
@@ -173,7 +179,7 @@ public void configure() {
173179

174180
// process it because the request validated
175181
String id = anHttpApiRequest.getUrlParam(":id");
176-
EntityInstance instance = this.entityStorage.findInstanceByPrimaryKey(id);
182+
EntityInstance instance = entityStorage.findInstanceByPrimaryKey(id);
177183
if (instance == null) {
178184
response = ApiResponse.error404("Could not find Entity with ID " + id);
179185
} else {
@@ -218,9 +224,9 @@ public void configure() {
218224

219225
return new SparkApiRequestResponseHandler(request, result, simulation).
220226
usingHandler((anHttpApiRequest) -> {
221-
return ApiResponse.created(this.entityStorage.
227+
return ApiResponse.created(entityStorage.
222228
findInstanceByPrimaryKey("11"),
223-
this.simulation.apiConfig());
229+
simulation.apiConfig());
224230
}).handle();
225231
});
226232

@@ -231,16 +237,16 @@ public void configure() {
231237
if (id.equals("11")) {
232238
// we can create id 11
233239
response = ApiResponse.created(
234-
this.entityStorage.findInstanceByPrimaryKey("11"),
235-
this.simulation.apiConfig());
240+
entityStorage.findInstanceByPrimaryKey("11"),
241+
simulation.apiConfig());
236242
} else {
237243
if (id.equals("10")) {
238244
// 10 is the entity we amend to name:eris
239245
EntityInstance fake = new EntityInstance(entityDefn).
240246
overrideValue("id", "10").setValue("name", "eris");
241247
response = ApiResponse.success().returnSingleInstance(fake);
242248
} else {
243-
final EntityInstance instance = this.entityStorage.findInstanceByPrimaryKey(id);
249+
final EntityInstance instance = entityStorage.findInstanceByPrimaryKey(id);
244250
if (instance == null) {
245251
if (anHttpApiRequest.getVerb() == HttpApiRequest.VERB.POST) {
246252
response = ApiResponse.error404("Could not find Entity with ID " + id);
@@ -279,7 +285,7 @@ public void configure() {
279285
// we can delete id 9
280286
response = new ApiResponse(204);
281287
} else {
282-
final EntityInstance instance = this.entityStorage.findInstanceByPrimaryKey(id);
288+
final EntityInstance instance = entityStorage.findInstanceByPrimaryKey(id);
283289
if (instance == null) {
284290
response = ApiResponse.error404("Could not find Entity with ID " + id);
285291
} else {

ercoremodel/src/main/java/uk/co/compendiumdev/thingifier/core/domain/instances/EntityInstanceCollection.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public EntityInstanceCollection addInstances(List<EntityInstance> addInstances)
6464
return this;
6565
}
6666

67-
public EntityInstanceCollection addInstance(EntityInstance instance) {
67+
public EntityInstance addInstance(EntityInstance instance) {
6868

6969
if(instance.getEntity()!=definition){
7070
throw new RuntimeException(String.format(
@@ -134,15 +134,13 @@ public EntityInstanceCollection addInstance(EntityInstance instance) {
134134
}
135135
}
136136

137-
return this;
137+
return instance;
138138
}
139139

140140
/* create and add */
141141
// TODO: this looks like it was added to support testing, consider removing and adding to a test helper
142142
public EntityInstance createManagedInstance() {
143-
EntityInstance instance = new EntityInstance(definition);
144-
addInstance(instance);
145-
return instance;
143+
return addInstance( new EntityInstance(definition));
146144
}
147145

148146
public int countInstances() {

0 commit comments

Comments
 (0)