Package org.geoserver.csw.store.internal

Source Code of org.geoserver.csw.store.internal.CatalogStoreFeatureCollection

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2012 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.csw.store.internal;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.geoserver.catalog.Catalog;
import org.geoserver.csw.feature.AbstractFeatureCollection;
import org.geoserver.csw.feature.MemoryFeatureCollection;
import org.geoserver.csw.records.CSWRecordDescriptor;
import org.geoserver.csw.records.RecordDescriptor;
import org.geotools.data.store.FilteringFeatureCollection;
import org.geotools.feature.FeatureCollection;
import org.opengis.feature.Feature;
import org.opengis.feature.type.FeatureType;
import org.opengis.filter.Filter;
import org.opengis.filter.sort.SortBy;

/**
* Internal Catalog Store Feature Collection
* Creates a Catalog Store from a GeoServer Catalog instance and a Mapping
* Will map data from GeoServer catalog to a particular CSW Record Type, provided in Record Descriptor
*
* @author Niels Charlier
*/
class CatalogStoreFeatureCollection extends AbstractFeatureCollection<FeatureType, Feature> {

    protected int offset, count;
    protected SortBy[] sortOrder;
    protected Filter filter;
    protected Catalog catalog;
    protected CatalogStoreMapping mapping;
    protected RecordDescriptor rd;
    protected Map<String, String> interpolationProperties = new HashMap<String, String>();

    /**
     * Create new CatalogStoreFeatureCollection
     *
     * @param offset Offset
     * @param count Count
     * @param sortOrder Sort Order
     * @param filter Filter
     * @param catalog The GeoServer Catalog
     * @param mapping The Mapping
     * @param rd Record Descriptor
     */
    public CatalogStoreFeatureCollection(int offset, int count, SortBy[] sortOrder, Filter filter, Catalog catalog, CatalogStoreMapping mapping, RecordDescriptor rd,  Map<String, String> interpolationProperties) {
        super(CSWRecordDescriptor.RECORD_TYPE);
        this.offset = offset;
        this.count = count;
        this.filter = filter;
        this.catalog = catalog;
        this.mapping = mapping;
        this.sortOrder = sortOrder;
        this.interpolationProperties = interpolationProperties;
        this.rd = rd;
    }

    @Override
    protected Iterator<Feature> openIterator() {
        return new CatalogStoreFeatureIterator(offset, count, sortOrder, filter, catalog, mapping, rd, interpolationProperties);
    }

    @Override
    protected void closeIterator(Iterator<Feature> close) {
     
    }

    @Override
    public FeatureCollection<FeatureType, Feature> subCollection(Filter filter) {
        return new FilteringFeatureCollection<FeatureType, Feature>(this, filter);
    }

    @Override
    public FeatureCollection<FeatureType, Feature> sort(SortBy order) {
        List<Feature> features = new ArrayList<Feature>();
        MemoryFeatureCollection memory = new MemoryFeatureCollection(getSchema(), features);
        return memory.sort(order);
    }

}
TOP

Related Classes of org.geoserver.csw.store.internal.CatalogStoreFeatureCollection

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.