package org.geoserver.web.data.store.aggregate; import java.util.Arrays; import java.util.List; import org.apache.wicket.model.IModel; import org.geoserver.web.wicket.GeoServerDataProvider; import org.geotools.data.aggregate.AggregateTypeConfiguration; import org.geotools.data.aggregate.SourceType; class ConfigurationListProvider extends GeoServerDataProvider<AggregateTypeConfiguration> { private static final long serialVersionUID = -600491576379986897L; public static Property<AggregateTypeConfiguration> NAME = new BeanProperty<AggregateTypeConfiguration>( "name", "name"); public static Property<AggregateTypeConfiguration> SOURCES = new AbstractProperty<AggregateTypeConfiguration>( "sources") { public IModel getModel(final IModel itemModel) { return new IModel() { @Override public void detach() { // nothing to do } @Override public Object getObject() { return getPropertyValue((AggregateTypeConfiguration) itemModel.getObject()); } @Override public void setObject(Object object) { // read only } }; }; @Override public Object getPropertyValue(AggregateTypeConfiguration item) { if (item.getSourceTypes() == null || item.getSourceTypes().size() == 0) { return ""; } else { StringBuilder sb = new StringBuilder(); for (SourceType st : item.getSourceTypes()) { sb.append(st.getStoreName().getLocalPart() + "/" + st.getTypeName()); sb.append(", "); } sb.setLength(sb.length() - 2); return sb; } } }; public static Property<AggregateTypeConfiguration> REMOVE = new PropertyPlaceholder<AggregateTypeConfiguration>( "remove" ); static List PROPERTIES = Arrays.asList(NAME, SOURCES, REMOVE); List<AggregateTypeConfiguration> items; public ConfigurationListProvider(List<AggregateTypeConfiguration> items) { this.items = items; } @Override protected List<AggregateTypeConfiguration> getItems() { return items; } @Override protected List<Property<AggregateTypeConfiguration>> getProperties() { return PROPERTIES; } }