Skip to content

Commit 139bd28

Browse files
authored
feature(thread): #COCO-5022 add structure name in json from thread's endpoints
1 parent 1ee2c16 commit 139bd28

File tree

4 files changed

+58
-47
lines changed

4 files changed

+58
-47
lines changed

directory/src/main/java/org/entcore/directory/controllers/DirectoryController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ public void directoryHandler(final Message<JsonObject> message) {
592592
userService.list(groupIds, userIds, itSelf, excludeId, busArrayHandler(message));
593593
break;
594594
case "list-structures" :
595-
schoolService.list(message.body().getJsonArray("fields"), busArrayHandler(message));
595+
schoolService.list(message.body().getJsonArray("fields"), message.body().getJsonArray("structureIds") , busArrayHandler(message));
596596
break;
597597
case "list-groups" :
598598
String structureId = message.body().getString("structureId");

directory/src/main/java/org/entcore/directory/controllers/StructureController.java

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -222,48 +222,45 @@ public void listStructures(final HttpServerRequest request) {
222222
JsonArray fields = new JsonArray().add("id").add("externalId").add("name").add("UAI")
223223
.add("address").add("zipCode").add("city").add("phone").add("academy");
224224
if ("XML".equalsIgnoreCase(format)) {
225-
structureService.list(fields, new Handler<Either<String, JsonArray>>() {
226-
@Override
227-
public void handle(Either<String, JsonArray> event) {
228-
if (event.isRight()) {
229-
JsonArray r = event.right().getValue();
230-
Ent ent = new Ent();
231-
for (Object o: r) {
232-
if (!(o instanceof JsonObject)) continue;
233-
JsonObject j = (JsonObject) o;
234-
Ent.Etablissement etablissement = new Ent.Etablissement();
235-
etablissement.setEtablissementId(j.getString("UAI", ""));
236-
etablissement.setEtablissementUid(j.getString("UAI", ""));
237-
etablissement.setCodePorteur(j.getString("academy", ""));
238-
etablissement.setNomCourant(j.getString("name", ""));
239-
etablissement.setAdressePlus(j.getString("address", ""));
240-
etablissement.setCodePostal(j.getString("zipCode", ""));
241-
etablissement.setVille(j.getString("city", ""));
242-
etablissement.setTelephone(j.getString("phone", ""));
243-
etablissement.setFax("");
244-
ent.getEtablissement().add(etablissement);
245-
}
246-
try {
247-
StringWriter response = new StringWriter();
248-
JAXBContext context = JAXBContext.newInstance(Ent.class);
249-
Marshaller marshaller = context.createMarshaller();
250-
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
251-
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
252-
marshaller.marshal(ent, response);
253-
request.response().putHeader("content-type", "application/xml");
254-
request.response().end(response.toString());
255-
} catch (JAXBException e) {
256-
log.error(e.toString(), e);
257-
request.response().setStatusCode(500);
258-
request.response().end(e.getMessage());
259-
}
260-
} else {
261-
leftToResponse(request, event.left());
262-
}
263-
}
264-
});
225+
structureService.list(fields, new JsonArray(), event -> {
226+
if (event.isRight()) {
227+
JsonArray r = event.right().getValue();
228+
Ent ent = new Ent();
229+
for (Object o: r) {
230+
if (!(o instanceof JsonObject)) continue;
231+
JsonObject j = (JsonObject) o;
232+
Ent.Etablissement etablissement = new Ent.Etablissement();
233+
etablissement.setEtablissementId(j.getString("UAI", ""));
234+
etablissement.setEtablissementUid(j.getString("UAI", ""));
235+
etablissement.setCodePorteur(j.getString("academy", ""));
236+
etablissement.setNomCourant(j.getString("name", ""));
237+
etablissement.setAdressePlus(j.getString("address", ""));
238+
etablissement.setCodePostal(j.getString("zipCode", ""));
239+
etablissement.setVille(j.getString("city", ""));
240+
etablissement.setTelephone(j.getString("phone", ""));
241+
etablissement.setFax("");
242+
ent.getEtablissement().add(etablissement);
243+
}
244+
try {
245+
StringWriter response = new StringWriter();
246+
JAXBContext context = JAXBContext.newInstance(Ent.class);
247+
Marshaller marshaller = context.createMarshaller();
248+
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
249+
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
250+
marshaller.marshal(ent, response);
251+
request.response().putHeader("content-type", "application/xml");
252+
request.response().end(response.toString());
253+
} catch (JAXBException e) {
254+
log.error(e.toString(), e);
255+
request.response().setStatusCode(500);
256+
request.response().end(e.getMessage());
257+
}
258+
} else {
259+
leftToResponse(request, event.left());
260+
}
261+
});
265262
} else {
266-
structureService.list(fields, arrayResponseHandler(request));
263+
structureService.list(fields,new JsonArray(), arrayResponseHandler(request));
267264
}
268265
}
269266

directory/src/main/java/org/entcore/directory/services/SchoolService.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,15 @@ public interface SchoolService {
5454

5555
void listChildren(String structureId, Handler<Either<String, JsonArray>> results);
5656

57-
void list(JsonArray fields, Handler<Either<String, JsonArray>> results);
57+
/**
58+
* Retrieve all structures. Fields to retrieve can be specified by the fields param,
59+
* a filter on structureIds can be specified by the param structureIds
60+
*
61+
* @param fields list of string of field on structure in neo4j
62+
* @param structureIds list of ids of structure for filter them
63+
* @param results structures
64+
*/
65+
void list(JsonArray fields, JsonArray structureIds, Handler<Either<String, JsonArray>> results);
5866

5967
void updateAndLog(UserInfos user, String structureId, JsonObject body, Handler<Either<String,JsonObject>> eitherHandler);
6068

directory/src/main/java/org/entcore/directory/services/impl/DefaultSchoolService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,17 +221,23 @@ public void listChildren(String structureId, Handler<Either<String, JsonArray>>
221221

222222

223223
@Override
224-
public void list(JsonArray fields, Handler<Either<String, JsonArray>> results) {
225-
if (fields == null || fields.size() == 0) {
224+
public void list(JsonArray fields, JsonArray structureIds, Handler<Either<String, JsonArray>> results) {
225+
if (fields == null || fields.isEmpty()) {
226226
fields = new JsonArray().add("id").add("externalId").add("name").add("UAI");
227227
}
228+
JsonObject params = new JsonObject();
228229
StringBuilder query = new StringBuilder();
229-
query.append("MATCH (s:Structure) RETURN ");
230+
String filter = "";
231+
if (structureIds != null && !structureIds.isEmpty()) {
232+
filter = " WHERE s.id IN {ids} ";
233+
params.put("ids", structureIds);
234+
}
235+
query.append("MATCH (s:Structure) ").append(filter).append(" RETURN ");
230236
for (Object field : fields) {
231237
query.append(" s.").append(field).append(" as ").append(field).append(",");
232238
}
233239
query.deleteCharAt(query.length() - 1);
234-
neo.execute(query.toString(), (JsonObject) null, validResultHandler(results));
240+
neo.execute(query.toString(), params, validResultHandler(results));
235241
}
236242

237243
@Override

0 commit comments

Comments
 (0)