It's not quite as elegant as I would have hoped. I only asked because I've
found over the years of using Tap you never know what these guys may have
already built, hoping not to reinvent the wheel. Anyhow, unless the tap
guys have something already built, this ended up being my reusable
solution.

public class ObjectModelFactoryImpl implements ObjectModelFactory {

    private final PropertyAccess propertyAccess;
    private final ValueEncoderSource valueEncoderSource;
    private final ValueLabelProvider<Object> valueLabelProvider;

    public ObjectModelFactoryImpl(PropertyAccess propertyAccess,
ValueEncoderSource valueEncoderSource, ValueLabelProvider<Object>
valueLabelProvider) {
        this.propertyAccess = propertyAccess;
        this.valueEncoderSource = valueEncoderSource;
        this.valueLabelProvider = valueLabelProvider;
    }

    public List<Object> create(List<?> objects, String labelProperty) {
        PropertyValueLabelProvider propertyValueLabelProvider = new
PropertyValueLabelProvider(
                valueEncoderSource, propertyAccess, labelProperty);

        return createSelectModel(objects, propertyValueLabelProvider);
    }

    private List<Object> createSelectModel(List<?> objects,
ValueLabelProvider<Object> labelProvider) {
        final List<Object> options = CollectionFactory.newList();

        for (Object object : objects) {
            String label = labelProvider.getLabel(object);

            options.add(label);
        }

        return options;
    }
}

public interface ObjectModelFactory {

    public List<Object> create(List<?> objects, String labelProperty);

}



On Wed, Oct 16, 2013 at 2:34 PM, Dimitris Zenios
<dimitris.zen...@gmail.com>wrote:

> What about these?
>
> return F.flow(ldapCache.findAllLDAPUsers(keyword)).map(new
> Mapper<LDAPProfile,String>() {
>     public String map(LDAPProfile element) {
>         return element.getName();
>     }
> }).toList();
>
>
> On Wed, Oct 16, 2013 at 8:49 PM, George Christman
> <gchrist...@cardaddy.com>wrote:
>
> > I'm wondering if there is already a tapestry service available for
> creating
> > a string array from an object list similar to the
> > SelectModelFactory.createSelectModel.
> >
> > I find myself creating similar code to below in my autocompletes.
> >
> > public List<String> onProvideCompletionsFromSupervisor(String keyword) {
> >     List<LDAPProfile> ldapProfiles = ldapCache.findAllLDAPUsers(keyword);
> >
> >     List<String> results = new ArrayList<>()';
> >
> >     for(LDAPProfile ldapProfile : ldapProfiles) {
> >         results.add(ldapProfile.getName);
> >     }
> >
> > return results;
> >
>



-- 
George Christman
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Reply via email to