/* (c) 2014 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.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(); } } }