mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-15 01:36:19 +01:00
Introduce own manager for reduced model object
Move autocomplete functionality to own managers and add functions to load reduced model objects by id
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package sonia.scm;
|
||||
|
||||
import sonia.scm.search.SearchRequest;
|
||||
import sonia.scm.search.SearchUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static java.util.Optional.ofNullable;
|
||||
import static sonia.scm.group.DisplayGroup.from;
|
||||
|
||||
public abstract class GenericDisplayManager<D, T extends ReducedModelObject> implements DisplayManager<T> {
|
||||
|
||||
private final GenericDAO<D> dao;
|
||||
private final Function<D, T> transform;
|
||||
|
||||
protected GenericDisplayManager(GenericDAO<D> dao, Function<D, T> transform) {
|
||||
this.dao = dao;
|
||||
this.transform = transform;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<T> autocomplete(String filter) {
|
||||
checkPermission();
|
||||
SearchRequest searchRequest = new SearchRequest(filter, true, DEFAULT_LIMIT);
|
||||
return SearchUtil.search(
|
||||
searchRequest,
|
||||
dao.getAll(),
|
||||
object -> matches(searchRequest, object)? transform.apply(object): null
|
||||
);
|
||||
}
|
||||
|
||||
protected abstract void checkPermission();
|
||||
|
||||
protected abstract boolean matches(SearchRequest searchRequest, D object);
|
||||
|
||||
@Override
|
||||
public Optional<T> get(String id) {
|
||||
return ofNullable(dao.get(id)).map(transform);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user