Порядковые номера записей в таблице.

Есть связанные сущности, напрмер, Document и Changes отношение OneToMany. В экране редактирования Document.edit есть таблица с элементами Changes. Есть необходимость пронумеровать список элементов в таблице. Решил сделать с помощью generateCell(Entity), но, судя по всему, этот метод вызывается несколько раз для каждого элемента сущности и простым счетчиком тут не обойтись. Не могли бы вы пояснить когда вызывается generateCell и какие изменения в эти вызовы вносят?

Работает, спасибо.

Мы не можем гарантировать что generateCell() вызовется в нужном порядке для формирования номеров строк. Можно написать такой счетчик, он будет выдавать позицию сущности в коллекции:



@Inject
private Table changesTable;
@Inject
private CollectionDatasource<Change, UUID> changesDs;
@Inject
private ComponentsFactory componentsFactory;


@Override
public void init(Map<String, Object> params) {
    changesTable.addGeneratedColumn("num", new Table.ColumnGenerator<Change>() {
        @Override
        public Component generateCell(Change entity) {
            int i = 0;
            for (UUID uuid : changesDs.getItemIds()) {
                i++;
                if (uuid.equals(entity.getId()))
                    break;
            }
            Label label = componentsFactory.createComponent(Label.NAME);
            label.setValue(i);
            return label;
        }
    });
}