001    package org.springframework.richclient.samples.dataeditor.ui;
002    
003    import org.springframework.richclient.samples.dataeditor.domain.ItemFilter;
004    import org.springframework.richclient.samples.dataeditor.domain.ItemService;
005    import org.springframework.richclient.widget.editor.provider.AbstractDataProvider;
006    
007    import java.util.List;
008    
009    public class ItemDataProvider extends AbstractDataProvider
010    {
011        private ItemService service;
012    
013        public ItemDataProvider(ItemService service)
014        {
015            this.service = service;
016        }
017    
018        public boolean supportsFiltering()
019        {
020            return true;
021        }
022    
023        public List getList(Object criteria)
024        {
025            if (criteria instanceof ItemFilter)
026            {
027                ItemFilter itemFilter = (ItemFilter) criteria;
028                return service.findItems(itemFilter);
029            }
030            else
031            {
032                throw new IllegalArgumentException("This provider can only filter through ItemFilter, not " + criteria.getClass());
033            }
034        }
035    
036        public boolean supportsUpdate()
037        {
038            return true;
039        }
040    
041        public boolean supportsCreate()
042        {
043            return true;
044        }
045    
046        public boolean supportsClone()
047        {
048            return false;
049        }
050    
051        public boolean supportsDelete()
052        {
053            return true;
054        }
055    
056         @Override
057        public Object doCreate(Object newData)
058        {
059            return newData;
060        }
061    
062        @Override
063        public void doDelete(Object dataToRemove)
064        {
065        }
066    
067        @Override
068        public Object doUpdate(Object updatedData)
069        {
070            return updatedData;
071        }
072    }