Package org.geoserver.web.data.store

Source Code of org.geoserver.web.data.store.StoreProvider$StoreInfoDetachableModel

/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.data.store;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.web.GeoServerApplication;
import org.geoserver.web.wicket.GeoServerDataProvider;

/**
* Data providers for the {@link StorePanel}
*/
@SuppressWarnings("serial")
public class StoreProvider extends GeoServerDataProvider<StoreInfo> {
   
    static final Property<StoreInfo> TYPE = new AbstractProperty<StoreInfo>("type") {

        public IModel getModel(final IModel itemModel) {
            return new Model(itemModel) {
               
                @Override
                public Object getObject() {
                    StoreInfo si = (StoreInfo) itemModel.getObject();
                    return getPropertyValue(si);
                }
            };
        }

        public Object getPropertyValue(StoreInfo item) {
            if (item instanceof DataStoreInfo)
                return "vector";
            else
                return "raster";
        }
    };

    static final Property<StoreInfo> WORKSPACE = new BeanProperty<StoreInfo>(
            "workspace", "workspace.name");

    static final Property<StoreInfo> NAME = new BeanProperty<StoreInfo>("name",
            "name");

    static final Property<StoreInfo> ENABLED = new BeanProperty<StoreInfo>(
            "enabled", "enabled");
   
    static final List<Property<StoreInfo>> PROPERTIES = Arrays.asList(TYPE,
            WORKSPACE, NAME, ENABLED);

    WorkspaceInfo workspace;
   
    public StoreProvider() {
        this(null);
    }
   
    public StoreProvider(WorkspaceInfo workspace) {
        this.workspace = workspace;
    }
   
    @Override
    protected List<StoreInfo> getItems() {
        return workspace == null ? getCatalog().getStores(StoreInfo.class)
            : getCatalog().getStoresByWorkspace( workspace, StoreInfo.class );
    }

    @Override
    protected List<Property<StoreInfo>> getProperties() {
        return PROPERTIES;
    }

    @Override
    protected Comparator<StoreInfo> getComparator(SortParam sort) {
        return super.getComparator(sort);
    }
   

    public IModel model(Object object) {
        return new StoreInfoDetachableModel((StoreInfo) object);
    }


    /**
     * A StoreInfo detachable model that holds the store id to retrieve it on demand from the
     * catalog
     */
    static class StoreInfoDetachableModel extends LoadableDetachableModel {

        private static final long serialVersionUID = -6829878983583733186L;

        String id;

        public StoreInfoDetachableModel(StoreInfo store) {
            super(store);
            this.id = store.getId();
        }

        @Override
        protected Object load() {
            Catalog catalog = GeoServerApplication.get().getCatalog();
            StoreInfo storeInfo = catalog.getStore(id, StoreInfo.class);
            return storeInfo;
        }
    }
}
TOP

Related Classes of org.geoserver.web.data.store.StoreProvider$StoreInfoDetachableModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.