/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ 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") { private static final long serialVersionUID = 8445881898430736063L; public IModel<?> getModel(final IModel<AggregateTypeConfiguration> itemModel) { return new IModel<String>() { private static final long serialVersionUID = -1612531825990914783L; @Override public void detach() { // nothing to do } @Override public String getObject() { return getPropertyValue(itemModel.getObject()); } @Override public void setObject(String object) { // read only } }; }; @Override public String 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.toString(); } } }; public static Property<AggregateTypeConfiguration> REMOVE = new PropertyPlaceholder<AggregateTypeConfiguration>( "remove" ); static List<org.geoserver.web.wicket.GeoServerDataProvider.Property<AggregateTypeConfiguration>> 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; } }