/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.v7.data.util; import com.vaadin.data.provider.DataProvider; import java.util.Collection; import com.vaadin.data.provider.ListDataProvider; import com.vaadin.v7.data.Container; /** * An in-memory container for JavaBeans. * * <p> * The properties of the container are determined automatically by introspecting * the used JavaBean class. Only beans of the same type can be added to the * container. * </p> * * <p> * In BeanContainer (unlike {@link BeanItemContainer}), the item IDs do not have * to be the beans themselves. The container can be used either with explicit * item IDs or the item IDs can be generated when adding beans. * </p> * * <p> * To use explicit item IDs, use the methods {@link #addItem(Object, Object)}, * {@link #addItemAfter(Object, Object, Object)} and * {@link #addItemAt(int, Object, Object)}. * </p> * * <p> * If a bean id resolver is set using * {@link #setBeanIdResolver(AbstractBeanContainer.BeanIdResolver)} or * {@link #setBeanIdProperty(Object)}, the methods {@link #addBean(Object)}, * {@link #addBeanAfter(Object, Object)}, {@link #addBeanAt(int, Object)} and * {@link #addAll(java.util.Collection)} can be used to add items to the * container. If one of these methods is called, the resolver is used to * generate an identifier for the item (must not return null). * </p> * * <p> * Note that explicit item identifiers can also be used when a resolver has been * set by calling the addItem*() methods - the resolver is only used when adding * beans using the addBean*() or {@link #addAll(Collection)} methods. * </p> * * <p> * It is not possible to add additional properties to the container. * </p> * * @param <IDTYPE> * The type of the item identifier * @param <BEANTYPE> * The type of the Bean * * @see AbstractBeanContainer * @see BeanItemContainer * * @since 6.5 * * @deprecated As of 8.0, replaced by {@link ListDataProvider} */ @Deprecated public class BeanContainer<IDTYPE, BEANTYPE> extends AbstractBeanContainer<IDTYPE, BEANTYPE> { public BeanContainer(Class<? super BEANTYPE> type) { super(type); } /** * Adds the bean to the Container. * * @see Container#addItem(Object) */ @Override public BeanItem<BEANTYPE> addItem(IDTYPE itemId, BEANTYPE bean) { if (itemId != null && bean != null) { return super.addItem(itemId, bean); } else { return null; } } /** * Adds the bean after the given item id. * * @see Container.Ordered#addItemAfter(Object, Object) */ @Override public BeanItem<BEANTYPE> addItemAfter(IDTYPE previousItemId, IDTYPE newItemId, BEANTYPE bean) { if (newItemId != null && bean != null) { return super.addItemAfter(previousItemId, newItemId, bean); } else { return null; } } /** * Adds a new bean at the given index. * * The bean is used both as the item contents and as the item identifier. * * @param index * Index at which the bean should be added. * @param newItemId * The item id for the bean to add to the container. * @param bean * The bean to add to the container. * * @return Returns the new BeanItem or null if the operation fails. */ @Override public BeanItem<BEANTYPE> addItemAt(int index, IDTYPE newItemId, BEANTYPE bean) { if (newItemId != null && bean != null) { return super.addItemAt(index, newItemId, bean); } else { return null; } } // automatic item id resolution /** * Sets the bean id resolver to use a property of the beans as the * identifier. * * @param propertyId * the identifier of the property to use to find item identifiers */ public void setBeanIdProperty(Object propertyId) { setBeanIdResolver(createBeanPropertyResolver(propertyId)); } @Override // overridden to make public public void setBeanIdResolver( BeanIdResolver<IDTYPE, BEANTYPE> beanIdResolver) { super.setBeanIdResolver(beanIdResolver); } @Override // overridden to make public public BeanItem<BEANTYPE> addBean(BEANTYPE bean) throws IllegalStateException, IllegalArgumentException { return super.addBean(bean); } @Override // overridden to make public public BeanItem<BEANTYPE> addBeanAfter(IDTYPE previousItemId, BEANTYPE bean) throws IllegalStateException, IllegalArgumentException { return super.addBeanAfter(previousItemId, bean); } @Override // overridden to make public public BeanItem<BEANTYPE> addBeanAt(int index, BEANTYPE bean) throws IllegalStateException, IllegalArgumentException { return super.addBeanAt(index, bean); } @Override // overridden to make public public void addAll(Collection<? extends BEANTYPE> collection) throws IllegalStateException { super.addAll(collection); } }