/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.webui.data;
import com.google.common.collect.Lists;
import com.vaadin.data.Item;
import com.vaadin.data.util.PropertysetItem;
import ru.codeinside.adm.database.Bid;
import ru.codeinside.gses.webui.Flash;
import ru.codeinside.gses.webui.containers.LazyLoadingContainer;
import ru.codeinside.gses.webui.containers.LazyLoadingQuery;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.List;
import static ru.codeinside.gses.webui.utils.Components.stringProperty;
final public class OwnHistoryBeanQuery implements LazyLoadingQuery, Serializable {
final static private SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm");
private static final long serialVersionUID = 1L;
private LazyLoadingContainer container;
private String[] sortProps = {};
private boolean[] sortAsc = {};
public OwnHistoryBeanQuery() {
}
@Override
public int size() {
return Flash.flash().getAdminService().countOfBidByEmail(Flash.login(), container.sender);
}
@Override
public List<Item> loadItems(final int startIndex, final int count) {
List<Bid> bidIds = Flash.flash().getAdminService().bidsByLogin(Flash.login(), startIndex, count, sortProps, sortAsc, container.sender);
final List<Item> items = Lists.newArrayListWithExpectedSize(bidIds.size());
for (Bid bid : bidIds) {
items.add(createItem(bid));
}
return items;
}
private PropertysetItem createItem(Bid bid) {
final PropertysetItem item = new PropertysetItem();
item.addItemProperty("id", stringProperty(bid.getId().toString()));
if (bid.getTag().isEmpty()) {
item.addItemProperty("procedure.name", stringProperty(bid.getProcedure().getName()));
} else {
item.addItemProperty("procedure.name", stringProperty(bid.getTag() + " - " + bid.getProcedure().getName()));
}
item.addItemProperty("dateCreated", stringProperty(formatter.format(bid.getDateCreated())));
item.addItemProperty("dateFinished", stringProperty(bid.getDateFinished() == null ? "" : formatter.format(bid.getDateFinished())));
return item;
}
@Override
public Item loadSingleResult(String paramString) {
Bid bid = Flash.flash().getAdminService().getBid(paramString);
return createItem(bid);
}
@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;
}
}