package ch.elexis.core.ui.eigenartikel; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import ch.elexis.core.eigenartikel.Eigenartikel; import ch.elexis.core.ui.util.viewers.CommonViewer; import ch.elexis.core.ui.util.viewers.ViewerConfigurer.ICommonViewerContentProvider; import ch.elexis.data.Query; public class EigenartikelTreeContentProvider implements ITreeContentProvider, ICommonViewerContentProvider { public static String FILTER_KEY = "Name"; private CommonViewer commonViewer; private String filter = null; public EigenartikelTreeContentProvider(CommonViewer cv){ this.commonViewer = cv; } @Override public void dispose(){ // TODO Auto-generated method stub } @SuppressWarnings("unchecked") @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput){} @Override public void reorder(String field){ // TODO Auto-generated method stub } @Override public void selected(){ // TODO Auto-generated method stub } @Override public void init(){ // TODO Auto-generated method stub } @Override public void startListening(){ commonViewer.getConfigurer().getControlFieldProvider().addChangeListener(this); } @Override public void stopListening(){ commonViewer.getConfigurer().getControlFieldProvider().removeChangeListener(this); } @Override public Object[] getElements(Object inputElement){ Query<Eigenartikel> qre = new Query<Eigenartikel>(Eigenartikel.class); qre.add(Eigenartikel.FLD_TYP, Query.EQUALS, Eigenartikel.TYPNAME); if (filter != null) { qre.add(Eigenartikel.FLD_NAME, Query.LIKE, "%" + filter + "%"); } qre.orderBy(false, Eigenartikel.FLD_NAME, Eigenartikel.FLD_EXTID); List<Eigenartikel> execute = qre.execute(); List<Eigenartikel> collect = execute.stream().filter(p -> !p.isValidPackage()).collect(Collectors.toList()); return collect.toArray(); } @Override public Object[] getChildren(Object parentElement){ if (parentElement != null && parentElement instanceof Eigenartikel) { Eigenartikel ea = (Eigenartikel) parentElement; if (ea.isProduct()) { return ea.getPackages().toArray(); } } return null; } @Override public Object getParent(Object element){ // Eigenartikel ea = (Eigenartikel) element; // if(ea.isProduct()) { // return null; // } else { // return Eigenartikel.load(ea.get(Eigenartikel.FLD_EXTID)); // } return null; } @Override public boolean hasChildren(Object element){ Eigenartikel ea = (Eigenartikel) element; return ea.isProduct() && ea.getPackages().size() > 0; } @Override public void changed(HashMap<String, String> values){ String filterValue = values.get(FILTER_KEY).toLowerCase(); if (filterValue != null && filterValue.length() > 1) { filter = filterValue; } else { filter = null; } commonViewer.notify(CommonViewer.Message.update); } }