Skip to content

Commit

Permalink
refs #17
Browse files Browse the repository at this point in the history
  • Loading branch information
rmpestano committed Mar 6, 2022
1 parent 1269d99 commit 8b7a7cc
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
56 changes: 37 additions & 19 deletions src/main/java/com/github/adminfaces/starter/bean/CarListMB.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.omnifaces.cdi.ViewScoped;
import org.primefaces.model.FilterMeta;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortMeta;
import org.primefaces.model.SortOrder;

import javax.annotation.PostConstruct;
Expand All @@ -15,8 +16,11 @@
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import static com.github.adminfaces.starter.util.Utils.addDetailMessage;
import static com.github.adminfaces.template.util.Assert.has;
import static java.util.Optional.ofNullable;

/**
* Created by rmpestano on 12/02/17.
Expand All @@ -41,38 +45,52 @@ public class CarListMB implements Serializable {
@PostConstruct
public void initDataModel() {
cars = new LazyDataModel<Car>() {

@Override
public List<Car> load(int first, int pageSize,
String sortField, SortOrder sortOrder,
Map<String, FilterMeta> filters) {
com.github.adminfaces.starter.infra.model.SortOrder order = null;
if (sortOrder != null) {
order = sortOrder.equals(SortOrder.ASCENDING) ? com.github.adminfaces.starter.infra.model.SortOrder.ASCENDING
: sortOrder.equals(SortOrder.DESCENDING) ? com.github.adminfaces.starter.infra.model.SortOrder.DESCENDING
: com.github.adminfaces.starter.infra.model.SortOrder.UNSORTED;
}
filter.setFirst(first).setPageSize(pageSize)
.setSortField(sortField).setSortOrder(order)
.setParams(filters);
List<Car> list = carService.paginate(filter);
setRowCount((int) carService.count(filter));
return list;
public int count(Map<String, FilterMeta> map) {
return (int) carService.count(filter);
}

@Override
public int getRowCount() {
return super.getRowCount();
public List<Car> load(int first, int pageSize, Map<String, SortMeta> sortMap, Map<String, FilterMeta> filterMap) {
if (has(sortMap)) {
sortMap.entrySet().stream()
.findAny()
.ifPresent(sortField -> {
filter.setSortField(sortField.getKey());
filter.setSortOrder(getSortOrder(SortOrder.ASCENDING == sortField.getValue().getOrder(), sortField.getValue().getOrder() == SortOrder.DESCENDING));
}
);
}
filter.setFirst(first).setPageSize(pageSize);
if (has(filterMap)) {
filter.setParams(filterMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
);
}
return carService.paginate(filter);
}

private com.github.adminfaces.starter.infra.model.SortOrder getSortOrder(boolean asc, boolean desc) {
return asc ?
com.github.adminfaces.starter.infra.model.SortOrder.ASCENDING : desc ?
com.github.adminfaces.starter.infra.model.SortOrder.DESCENDING : com.github.adminfaces.starter.infra.model.SortOrder.UNSORTED;
}

@Override
public Car getRowData(String key) {
return carService.findById(new Integer(key));
return carService.findById(Integer.valueOf(key));
}

@Override
public String getRowKey(Car car) {
return car.getId().toString();
}
};
}

public void clear() {
filter = new Filter<Car>(new Car());
filter = new Filter<>(new Car());
}

public List<String> completeModel(String query) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public List<Car> paginate(Filter<Car> filter) {
}

int page = filter.getFirst() + filter.getPageSize();
if (filter.getParams().isEmpty()) {
if (!pagedCars.isEmpty() && filter.getParams().isEmpty()) {
pagedCars = pagedCars.subList(filter.getFirst(), page > allCars.size() ? allCars.size() : page);
return pagedCars;
}
Expand Down

0 comments on commit 8b7a7cc

Please sign in to comment.