package org.geoserver.web.data.store.aggregate; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.DataStoreInfo; import org.geoserver.catalog.StoreInfo; import org.geoserver.web.GeoServerApplication; import org.geotools.data.DataStore; import org.geotools.util.logging.Logging; /** * Reports the list of feature types available in the specified store * * @author Andrea Aime - GeoSolutiosn */ class TypeListModel extends LoadableDetachableModel<List<String>> { private static final long serialVersionUID = 5420253236935587959L; static final Logger LOGGER = Logging.getLogger(TypeListModel.class); IModel<StoreInfo> storeModel; public TypeListModel(IModel<StoreInfo> storeModel) { this.storeModel = storeModel; } @Override protected List<String> load() { StoreInfo store = storeModel.getObject(); if (store == null) { return Collections.emptyList(); } try { Catalog catalog = GeoServerApplication.get().getCatalog(); DataStore ds = (DataStore) catalog.getResourcePool() .getDataStore((DataStoreInfo) store); String[] typeNames = ds.getTypeNames(); Arrays.sort(typeNames); return Arrays.asList(typeNames); } catch (Exception e) { LOGGER.log(Level.WARNING, "Failed to load feature type list ", e); return Collections.emptyList(); } } }