package ru.codeinside.gses.webui.manager;
import com.vaadin.data.Item;
import ru.codeinside.gses.beans.DirectoryBeanProvider;
import ru.codeinside.gses.webui.containers.LazyLoadingContainer;
import ru.codeinside.gses.webui.containers.LazyLoadingQuery;
import java.util.ArrayList;
import java.util.List;
public abstract class DictionaryQuery implements LazyLoadingQuery {
private final String dirName;
private String[] sortProps = {};
private boolean[] sortAsc = {};
public LazyLoadingContainer container;
public DictionaryQuery(String dirName) {
this.dirName = dirName;
}
@Override
public int size() {
return DirectoryBeanProvider.get().getCountValues(dirName);
}
@Override
public List<Item> loadItems(int start, int count) {
List<Item> items = new ArrayList<Item>();
List<Object[]> values = DirectoryBeanProvider.get().getValues(dirName, start, count, sortProps, sortAsc);
for (Object[] o : values) {
items.add(createItem((String) o[0], (String) o[1]));
}
return items;
}
public abstract Item createItem(String key, String value);/* {
PropertysetItem item = new PropertysetItem();
item.addItemProperty("key", Components.stringProperty(key));
item.addItemProperty("value", Components.stringProperty(value));
item.addItemProperty("form", Components.buttonProperty("Удалить", createDeleteEntryListener(dirMapTable, dirName, key)));
return item;
}*/
@Override
public Item loadSingleResult(String paramString) {
String value = DirectoryBeanProvider.get().getValue(dirName, paramString);
return createItem(paramString, value);
}
@Override
public void setSorting(Object[] propertyIds, boolean[] ascending) {
String[] props = new String[propertyIds.length];
for (int i = 0; i < propertyIds.length; i++) {
props[i] = propertyIds[i].toString();
}
sortProps = props;
sortAsc = ascending;
}
@Override
public void setLazyLoadingContainer(LazyLoadingContainer container) {
this.container = container;
}
}