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