Skip to content
Snippets Groups Projects
Commit 23568a03 authored by Lars Johansson's avatar Lars Johansson
Browse files

Fix pagination for structures endpoints for mnemonic and mnemonic path.

parent 625bc455
No related branches found
No related tags found
No related merge requests found
Pipeline #168765 passed
......@@ -357,7 +357,12 @@ public class StructuresService {
}
private List<StructureElement> paginate(List<StructureElement> list, Integer offset, Integer limit) {
// intended only for pagination for history of structure elements
// intended as pagination when list may contain result from multiple read operations
// read operations should not contain pagination in such cases
if (offset == null || limit == null) {
return list;
}
List<StructureElement> listPagination = Lists.newArrayList();
int offsetItems = offset * limit;
int availableItems = list.size() - offsetItems;
......@@ -409,14 +414,19 @@ public class StructuresService {
LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_STRUCTURES_MNEMONIC, "mnemonic", mnemonic));
// TODO handle orderBy, isAsc, offset, limit
// order by
// handled in each operation
// cannot guarantee order across all content
// pagination
// separate pagination when result may be from multiple read operations
// read operations should not contain pagination in such cases
ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSystem = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSubsystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDiscipline = readStructures(Type.DISCIPLINE, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDeviceType = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseSystem = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseSubsystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDiscipline = readStructures(Type.DISCIPLINE, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDeviceType = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
List<StructureElement> structureElements = Lists.newArrayList();
structureElements.addAll(responseSystemGroup.getList());
......@@ -426,7 +436,11 @@ public class StructuresService {
structureElements.addAll(responseDeviceGroup.getList());
structureElements.addAll(responseDeviceType.getList());
return new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), 0, structureElements.size());
// pagination
Long totalCount = Long.valueOf(structureElements.size());
structureElements = paginate(structureElements, offset, limit);
return new ResponsePageStructureElements(structureElements, totalCount, structureElements.size(), offset, structureElements.size());
}
public ResponsePageStructureElements readStructuresMnemonicpath(String mnemonicPath,
......@@ -437,14 +451,19 @@ public class StructuresService {
LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_STRUCTURES_MNEMONIC_PATH, "mnemonicPath", mnemonicPath));
// TODO handle orderBy, isAsc, offset, limit
// order by
// handled in each operation
// cannot guarantee order across all content
// pagination
// separate pagination when result may be from multiple read operations
// read operations should not contain pagination in such cases
ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSystem = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSubsystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDiscipline = readStructures(Type.DISCIPLINE, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseDeviceType = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, offset, limit);
ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseSystem = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseSubsystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDiscipline = readStructures(Type.DISCIPLINE, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
ResponsePageStructureElements responseDeviceType = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
List<StructureElement> structureElements = Lists.newArrayList();
structureElements.addAll(responseSystemGroup.getList());
......@@ -454,7 +473,11 @@ public class StructuresService {
structureElements.addAll(responseDeviceGroup.getList());
structureElements.addAll(responseDeviceType.getList());
return new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), 0, structureElements.size());
// pagination
Long totalCount = Long.valueOf(structureElements.size());
structureElements = paginate(structureElements, offset, limit);
return new ResponsePageStructureElements(structureElements, totalCount, structureElements.size(), offset, structureElements.size());
}
public ResponsePageStructureElements readStructuresHistory(Type type,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment