⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataconfig.java

📁 电子地图服务器,搭建自己的地图服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org.  All rights reserved.
 * This code is licensed under the GPL 2.0 license, availible at the root
 * application directory.
 */
package org.vfny.geoserver.config;

import org.geotools.data.DataStore;
import org.geotools.data.DefaultRepository;
import org.geotools.data.Repository;
import org.vfny.geoserver.global.Data;
import org.vfny.geoserver.global.dto.CoverageInfoDTO;
import org.vfny.geoserver.global.dto.CoverageStoreInfoDTO;
import org.vfny.geoserver.global.dto.DataDTO;
import org.vfny.geoserver.global.dto.DataStoreInfoDTO;
import org.vfny.geoserver.global.dto.FeatureTypeInfoDTO;
import org.vfny.geoserver.global.dto.NameSpaceInfoDTO;
import org.vfny.geoserver.global.dto.StyleDTO;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;


/**
 * Data purpose.
 *
 * <p>
 * Represents an instance of the catalog.xml file in the configuration of the
 * server, along with associated configuration files for the feature types.
 * </p>
 *
 * <p></p>
 *
 * @author dzwiers, Refractions Research, Inc.
 * @author $Author: Alessio Fabiani (alessio.fabiani@gmail.com) $ (last modification)
 * @author $Author: Simone Giannecchini (simboss1@gmail.com) $ (last modification)
 * @version $Id: DataConfig.java 7746 2007-11-13 15:38:35Z aaime $
 *
 * @see DataSource
 * @see FeatureTypeInfo
 * @see StyleConfig
 */
public class DataConfig {
    public static final String CONFIG_KEY = "Config.Data";
    public static final String SEPARATOR = ":::";
    public static final String SELECTED_FEATURE_TYPE = "selectedFeatureType";
    public static final String SELECTED_ATTRIBUTE_TYPE = "selectedAttributeType";
    public static final String SELECTED_COVERAGE = "selectedCoverage";
    private Logger LOGGER = org.geotools.util.logging.Logging.getLogger(this.getClass().toString());

    /**
     * A set of dataFormatConfig by dataFormatId.
     *
     * @see org.vfny.geoserver.config.data.CoverageStoreInfo
     *
     * @uml.property name="dataFormats"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.CoverageStoreConfig"
     * multiplicity="(0 1)"
     */
    private Map dataFormats;

    /**
     * A set of dataStoreConfig by dataStoreId.
     *
     * @see org.vfny.geoserver.config.data.DataStoreInfo
     *
     * @uml.property name="dataStores"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.DataStoreConfig"
     * multiplicity="(0 1)"
     */
    private Map dataStores;

    /**
     * A set of namespaces and their names.
     *
     * @see org.vfny.geoserver.config.data.NameSpaceConfig
     *
     * @uml.property name="nameSpaces"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.NameSpaceConfig"
     * multiplicity="(0 1)"
     */
    private Map nameSpaces;

    /**
     * FeatureTypesInfoConfig referenced by key "<code>dataStoreID + SEPARATOR
     * + typeName</code>"
     *
     * @see org.vfny.geoserver.global.dto.FeatureTypeInfoConfig
     *
     * @uml.property name="featuresTypes"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.FeatureTypeConfig"
     * multiplicity="(0 1)"
     */
    private Map featuresTypes;

    /**
     *
     * @uml.property name="coverages"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.CoverageConfig"
     * multiplicity="(0 1)"
     */
    private Map coverages;

    /**
     * A set of styles and their names.
     *
     * @see org.vfny.geoserver.config.data.StyleConfig
     *
     * @uml.property name="styles"
     * @uml.associationEnd qualifier="key:java.lang.String org.vfny.geoserver.config.StyleConfig"
     * multiplicity="(0 1)"
     */
    private Map styles;

    /**
     * the default namespace for the server instance.
     *
     * @see org.vfny.geoserver.config.data.NameSpaceConfig
     *
     * @uml.property name="defaultNameSpace"
     * @uml.associationEnd multiplicity="(1 1)"
     */
    private NameSpaceConfig defaultNameSpace;

    /**
     * Data constructor.
     *
     * <p>
     * Creates a Data to represent an instance with default data.
     * </p>
     *
     * @see defaultSettings()
     */
    public DataConfig() {
        dataFormats = new HashMap();
        dataStores = new HashMap();
        nameSpaces = new HashMap();
        styles = new HashMap();
        featuresTypes = new HashMap();
        coverages = new HashMap();
        defaultNameSpace = new NameSpaceConfig();
    }

    /**
     * Data constructor.
     *
     * <p>
     * Creates a copy of the DataDTO provided. If the Data provided  is null
     * then default values are used. All the datastructures are cloned.
     * </p>
     *
     * @param data The catalog to copy.
     */
    public DataConfig(DataDTO data) {
        //        Iterator i = null;
        //
        //        i = data.getDataStores().keySet().iterator();
        //        dataStores = new HashMap();
        //
        //        while (i.hasNext()) {
        //            Object key = i.next();
        //            dataStores.put(key,
        //                new DataStoreConfig(
        //                    (DataStoreInfoDTO) data.getDataStores().get(key)));
        //        }
        //
        //        i = data.getNameSpaces().keySet().iterator();
        //        nameSpaces = new HashMap();
        //
        //        while (i.hasNext()) {
        //            Object key = i.next();
        //            nameSpaces.put(key,
        //                new NameSpaceConfig(
        //                    (NameSpaceInfoDTO) data.getNameSpaces().get(key)));
        //
        //            if (((NameSpaceConfig) nameSpaces.get(key)).isDefault()) {
        //                defaultNameSpace = (NameSpaceConfig) nameSpaces.get(key);
        //            }
        //        }
        //
        //        i = data.getFeaturesTypes().keySet().iterator();
        //        featuresTypes = new HashMap();
        //
        //        while (i.hasNext()) {
        //            Object key = i.next();
        //
        //            featuresTypes.put(key,
        //                new FeatureTypeConfig(
        //                    (FeatureTypeInfoDTO) data.getFeaturesTypes().get(key)));
        //        }
        //
        //        i = data.getStyles().keySet().iterator();
        //        styles = new HashMap();
        //
        //        while (i.hasNext()) {
        //            Object key = i.next();
        //            styles.put(key,
        //                new StyleConfig((StyleDTO) data.getStyles().get(key)));
        //        }
        this();
        update(data);
    }

    /**
     * Instantiates the data config from the data module.
     *
     * @param data The data module.
     */
    public DataConfig(Data data) {
        this((DataDTO) data.toDTO());
    }

    /**
     * Implement loadDTO.
     *
     * <p>
     * Populates the object with the param passed.
     * </p>
     *
     * @param data An instance of DataDTO to populate this object
     *
     * @throws NullPointerException DOCUMENT ME!
     *
     * @see org.vfny.geoserver.config.DataStructure#loadDTO(java.lang.Object)
     */
    public synchronized void update(DataDTO data) {
        if (data == null) {
            throw new NullPointerException("Data Data Transfer Object required");
        }

        Iterator i;
        Object key;

        ////
        //
        //
        //
        ////
        i = data.getFormats().keySet().iterator();
        dataFormats = new HashMap();

        while (i.hasNext()) {
            key = i.next();
            dataFormats.put(key,
                new CoverageStoreConfig((CoverageStoreInfoDTO) data.getFormats().get(key)));
        }

        ////
        //
        //
        //
        ////
        i = data.getDataStores().keySet().iterator();
        dataStores = new HashMap();

        while (i.hasNext()) {
            key = i.next();
            dataStores.put(key,
                new DataStoreConfig((DataStoreInfoDTO) data.getDataStores().get(key)));
        }

        ////
        //
        //
        //
        ////
        i = data.getNameSpaces().keySet().iterator();
        nameSpaces = new HashMap();

        while (i.hasNext()) {
            key = i.next();
            nameSpaces.put(key,
                new NameSpaceConfig((NameSpaceInfoDTO) data.getNameSpaces().get(key)));

            if (((NameSpaceConfig) nameSpaces.get(key)).isDefault()) {
                defaultNameSpace = (NameSpaceConfig) nameSpaces.get(key);
            }
        }

        ////
        //
        //
        //
        ////
        i = data.getFeaturesTypes().keySet().iterator();
        featuresTypes = new HashMap();

        FeatureTypeInfoDTO f;

        while (i.hasNext()) {
            key = i.next();

            f = (FeatureTypeInfoDTO) data.getFeaturesTypes().get(key);
            featuresTypes.put(f.getDataStoreId() + ":" + f.getName(), new FeatureTypeConfig(f));
        }

        ////
        //
        //
        //
        ////
        i = data.getCoverages().keySet().iterator();
        coverages = new HashMap();

        CoverageInfoDTO c;

        while (i.hasNext()) {
            key = i.next();
            c = (CoverageInfoDTO) data.getCoverages().get(key);
            coverages.put(c.getFormatId() + ":" + c.getName(), new CoverageConfig(c));
        }

        ////
        //
        //
        //
        ////
        i = data.getStyles().keySet().iterator();
        styles = new HashMap();

        while (i.hasNext()) {
            key = i.next();
            styles.put(key, new StyleConfig((StyleDTO) data.getStyles().get(key)));
        }
    }

    public DataDTO toDTO() {
        DataDTO dt = new DataDTO();
        HashMap tmp = null;
        Iterator i = null;

        tmp = new HashMap();
        dt.setFormats(tmp);
        i = dataFormats.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((CoverageStoreConfig) dataFormats.get(key)).toDTO());
        }

        tmp = new HashMap();
        dt.setDataStores(tmp);
        i = dataStores.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((DataStoreConfig) dataStores.get(key)).toDTO());
        }

        tmp = new HashMap();
        dt.setFeaturesTypes(tmp);
        i = featuresTypes.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((FeatureTypeConfig) featuresTypes.get(key)).toDTO());
        }

        tmp = new HashMap();
        dt.setCoverages(tmp);
        i = coverages.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((CoverageConfig) coverages.get(key)).toDTO());
        }

        tmp = new HashMap();
        dt.setStyles(tmp);
        i = styles.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((StyleConfig) styles.get(key)).toDTO());
        }

        tmp = new HashMap();
        dt.setNameSpaces(tmp);
        i = nameSpaces.keySet().iterator();

        while (i.hasNext()) {
            Object key = i.next();
            tmp.put(key, ((NameSpaceConfig) nameSpaces.get(key)).toDTO());

            if (((NameSpaceInfoDTO) tmp.get(key)).isDefault()) {
                dt.setDefaultNameSpacePrefix(((NameSpaceInfoDTO) tmp.get(key)).getPrefix());
            }
        }

        return dt;
    }

    public List getFeatureTypeConfigKeys() {
        return new ArrayList(featuresTypes.keySet());
    }

    /**
     * Lookup FeatureTypeConfig for things like WMS.
     *
     * @param key Key based on <code>dataStoreID.typeName</code>
     *
     * @return FeatureTypeInfo or null if not found
     *
     * @throws NoSuchElementException DOCUMENT ME!
     */
    public FeatureTypeConfig lookupFeatureTypeConfig(String key) {
        if (featuresTypes.containsKey(key)) {
            return (FeatureTypeConfig) featuresTypes.get(key);
        } else {
            throw new NoSuchElementException("Could not find FeatureTypeConfig '" + key + "'.");
        }
    }

    /**
     * getDataFormats purpose.
     *
     * <p>
     * Description ...
     * </p>
     *
     * @return
     *
     * @uml.property name="dataFormats"
     */
    public Map getDataFormats() {
        return dataFormats;
    }

    /**
     * List of DataFormatIds
     *
     * @return DOCUMENT ME!
     */
    public List listDataFormatIds() {
        return new ArrayList(dataFormats.keySet());
    }

    public List getDataFormatIds() {
        return listDataFormatIds();
    }

    /**
     * getDataFormats purpose.
     *
     * <p>
     * Description ...
     * </p>
     *
     * @param key DOCUMENT ME!
     *
     * @return
     */
    public CoverageStoreConfig getDataFormat(String key) {
        return (CoverageStoreConfig) dataFormats.get(key);
    }

    /**
     * getDataStores purpose.
     *
     * <p>
     * Description ...
     * </p>
     *
     * @return
     *
     * @uml.property name="dataStores"
     */
    public Map getDataStores() {
        return dataStores;
    }

    /**
     * List of DataStoreIds
     *
     * @return DOCUMENT ME!
     */
    public List listDataStoreIds() {
        return new ArrayList(dataStores.keySet());
    }

    public List getDataStoreIds() {
        return listDataStoreIds();
    }

    /**
     * getDataStores purpose.
     *
     * <p>
     * Description ...
     * </p>
     *
     * @param key DOCUMENT ME!
     *
     * @return
     */
    public DataStoreConfig getDataStore(String key) {
        return (DataStoreConfig) dataStores.get(key);
    }

    /**
     * getDefaultNameSpace purpose.
     *
     * <p>
     * Description ...
     * </p>
     *
     * @return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -