Refactorize setupNameFilter
FEA: ItEr75S11PreventLooseChanges
This commit is contained in:
parent
2ead73273f
commit
9c366dc1fa
1 changed files with 65 additions and 58 deletions
|
|
@ -182,7 +182,7 @@ public class ResourceLoadController implements Composer {
|
|||
addSchedulingScreenListeners();
|
||||
addCommands(resourcesLoadPanel);
|
||||
if(firstLoad || filterHasChanged) {
|
||||
setupNameFilter();
|
||||
setupPaginateByNameFilter();
|
||||
}
|
||||
firstLoad = false;
|
||||
}
|
||||
|
|
@ -381,76 +381,83 @@ public class ResourceLoadController implements Composer {
|
|||
resourcesLoadPanel.setFirstOptionalFilter(hbox);
|
||||
}
|
||||
|
||||
private void setupNameFilter() {
|
||||
private Comboitem buildPageCombo(int startPosition, String first, String end) {
|
||||
Comboitem result = new Comboitem();
|
||||
result.setLabel(first.substring(0, 1) + " - " + end.substring(0, 1));
|
||||
result.setDescription(first + " - " + end);
|
||||
result.setValue(startPosition);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void setupPaginateByNameFilter() {
|
||||
Combobox filterByNameCombo = resourcesLoadPanel.getPaginationFilterCombobox();
|
||||
if (filterByNameCombo == null) {
|
||||
return;
|
||||
}
|
||||
filterByNameCombo.getChildren().clear();
|
||||
List<Resource> resources = resourceLoadModel.getAllResourcesList();
|
||||
List<Criterion> criteria = resourceLoadModel.getAllCriteriaList();
|
||||
int size;
|
||||
if(currentFilterByResources) {
|
||||
size = resources.size();
|
||||
}
|
||||
else {
|
||||
size = criteria.size();
|
||||
}
|
||||
int pageSize = resourceLoadModel.getPageSize();
|
||||
|
||||
if(size > pageSize) {
|
||||
int position = 0;
|
||||
while(position < size) {
|
||||
String firstName;
|
||||
String lastName;
|
||||
int newPosition = position + pageSize;
|
||||
if(currentFilterByResources) {
|
||||
firstName = resources.get(position).getName();
|
||||
if(newPosition - 1 < size) {
|
||||
lastName = resources.get(newPosition - 1)
|
||||
.getName();
|
||||
}
|
||||
else {
|
||||
lastName = resources.get(size - 1)
|
||||
.getName();
|
||||
}
|
||||
}
|
||||
else {
|
||||
Criterion criterion = criteria.get(position);
|
||||
firstName = criterion.getType().getName() + ": " + criterion.getName();
|
||||
if(newPosition - 1 < size) {
|
||||
criterion = criteria.get(newPosition - 1);
|
||||
lastName = criterion.getType().getName() + ": " + criterion.getName();
|
||||
}
|
||||
else {
|
||||
criterion = criteria.get(size - 1);
|
||||
lastName = criterion.getType().getName() + ": " + criterion.getName();
|
||||
}
|
||||
}
|
||||
|
||||
Comboitem item = new Comboitem();
|
||||
item.setLabel(firstName.substring(0, 1) + " - " + lastName.substring(0, 1));
|
||||
item.setDescription(firstName + " - " + lastName);
|
||||
item.setValue(position);
|
||||
filterByNameCombo.appendChild(item);
|
||||
if(resourceLoadModel.getPageFilterPosition() == position) {
|
||||
filterByNameCombo.setSelectedItemApi(item);
|
||||
}
|
||||
position = newPosition;
|
||||
}
|
||||
}
|
||||
|
||||
List<Comboitem> pages = byNamePages();
|
||||
Comboitem lastItem = new Comboitem();
|
||||
lastItem.setLabel(_("All"));
|
||||
lastItem.setDescription(_("Show all elements"));
|
||||
lastItem.setValue(new Integer(-1));
|
||||
filterByNameCombo.appendChild(lastItem);
|
||||
if(resourceLoadModel.getPageFilterPosition() == -1) {
|
||||
filterByNameCombo.setSelectedItemApi(lastItem);
|
||||
pages.add(lastItem);
|
||||
|
||||
for (Comboitem each : pages) {
|
||||
filterByNameCombo.appendChild(each);
|
||||
}
|
||||
|
||||
if(filterByNameCombo.getSelectedIndex() == -1) {
|
||||
int currentPosition = resourceLoadModel.getPageFilterPosition();
|
||||
if (currentPosition >= 0 && currentPosition < pages.size()) {
|
||||
filterByNameCombo.setSelectedItemApi(pages.get(currentPosition));
|
||||
} else if (currentPosition == -1) {
|
||||
filterByNameCombo.setSelectedItemApi(lastItem);
|
||||
} else {
|
||||
filterByNameCombo.setSelectedIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
private List<Comboitem> byNamePages() {
|
||||
if (currentFilterByResources) {
|
||||
return byNamePages(resourceLoadModel.getAllResourcesList(),
|
||||
new INameExtractor<Resource>() {
|
||||
|
||||
@Override
|
||||
public String getNameOf(Resource resource) {
|
||||
return resource.getName();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return byNamePages(resourceLoadModel.getAllCriteriaList(),
|
||||
new INameExtractor<Criterion>() {
|
||||
|
||||
@Override
|
||||
public String getNameOf(Criterion criterion) {
|
||||
return criterion.getType().getName() + ": "
|
||||
+ criterion.getName();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
interface INameExtractor<T> {
|
||||
public String getNameOf(T value);
|
||||
}
|
||||
|
||||
private <T> List<Comboitem> byNamePages(List<T> elements,
|
||||
INameExtractor<T> nameExtractor) {
|
||||
List<Comboitem> result = new ArrayList<Comboitem>();
|
||||
int pageSize = resourceLoadModel.getPageSize();
|
||||
for (int startPos = 0; startPos < elements.size(); startPos += pageSize) {
|
||||
int endPos = Math.min(startPos + pageSize - 1, elements.size() - 1);
|
||||
String first = nameExtractor.getNameOf(elements.get(startPos));
|
||||
String end = nameExtractor.getNameOf(elements.get(endPos));
|
||||
Comboitem item = buildPageCombo(startPos, first, end);
|
||||
result.add(item);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void resetAdditionalFilters() {
|
||||
resourceLoadModel.setInitDateFilter(new LocalDate().minusDays(1));
|
||||
resourceLoadModel.setEndDateFilter(null);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue