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

📄 cswpersistenceservice.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * @throws PersonalizationException Thrown if there was an exception with the
     *                         {@link IPersonalizationContext}.
     * @throws IllegalStateException Thrown if the {@link IPersonalizationContext} has
     *                         not been set.
     */
    public List<CswPersistenceObject> retrieveAll()
        throws PersonalizationException {
        List<CswPersistenceObject> objs = new ArrayList<CswPersistenceObject>();

        if (_personalizationContext == null) {
            throw new IllegalStateException("Personalization context not set");
        }

        for (IQuery q : getSavedQueries()) {
            objs.add(createPersistenceObject(q));
        }

        return objs;
    }

    /**
     * Utility method to create a {@link AttributeType} given the key
     * and value.
     *
     * @param name The key of the key/value pair.
     * @param value The value of the key/value pair.
     * @return The created {@link AttributeType}.
     */
    private AttributeType createAttributeType(String name, String value) {
        ObjectFactory factory = null;
        AttributeType a = null;

        try {
            factory = new ObjectFactory();

            a = factory.createAttributeType();

            a.setName(name);
            a.setValue(value);
        } catch (JAXBException ex) {
            LOG.warn("JAXBException occurred creating object factory", ex);
        }

        return a;
    }

    /**
     * Utility method to extract all the persistence attributes from the
     * given {@link CswPersistenceObject}.  Create an {@link ArrayList} of all the
     * generated {@link AttributeType}.
     *
     * @param obj The {@link CswPersistenceObject} containing all the search
     *                         attributes.
     * @return {@link ArrayList} of generated {@link AttributeType}.
     */
    private ArrayList<AttributeType> generatePersistenceAttributes(
        CswPersistenceObject obj) {
        ArrayList<AttributeType> attrs = new ArrayList<AttributeType>();

        attrs.add(createAttributeType(CswPersistenceObject.SEARCH_TERM_KEY,
                obj.getAttribute(CswPersistenceObject.SEARCH_TERM_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.LIVE_DATA_KEY,
                obj.getAttribute(CswPersistenceObject.LIVE_DATA_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.ADVANCED_QUERY_KEY,
                obj.getAttribute(CswPersistenceObject.ADVANCED_QUERY_KEY)));
        attrs.add(createAttributeType(
                CswPersistenceObject.USE_DATA_CATEGORIES,
                obj.getAttribute(CswPersistenceObject.USE_DATA_CATEGORIES)));
        attrs.add(createAttributeType(CswPersistenceObject.AGRICULTURE_KEY,
                obj.getAttribute(CswPersistenceObject.AGRICULTURE_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.BIOLOGY_KEY,
                obj.getAttribute(CswPersistenceObject.BIOLOGY_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.ADMIN_KEY,
                obj.getAttribute(CswPersistenceObject.ADMIN_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.ATMOSPHERIC_KEY,
                obj.getAttribute(CswPersistenceObject.ATMOSPHERIC_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.BUSINESS_KEY,
                obj.getAttribute(CswPersistenceObject.BUSINESS_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.ELEVATION_KEY,
                obj.getAttribute(CswPersistenceObject.ELEVATION_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.ENVIRONMENT_KEY,
                obj.getAttribute(CswPersistenceObject.ENVIRONMENT_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.GEOLOGICAL_KEY,
                obj.getAttribute(CswPersistenceObject.GEOLOGICAL_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.HUMAN_KEY,
                obj.getAttribute(CswPersistenceObject.HUMAN_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.IMAGERY_KEY,
                obj.getAttribute(CswPersistenceObject.IMAGERY_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.MILITARY_KEY,
                obj.getAttribute(CswPersistenceObject.MILITARY_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.INLAND_KEY,
                obj.getAttribute(CswPersistenceObject.INLAND_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.LOCATIONS_KEY,
                obj.getAttribute(CswPersistenceObject.LOCATIONS_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.OCEANS_KEY,
                obj.getAttribute(CswPersistenceObject.OCEANS_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.CADASTRAL_KEY,
                obj.getAttribute(CswPersistenceObject.CADASTRAL_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.CULTURAL_KEY,
                obj.getAttribute(CswPersistenceObject.CULTURAL_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.FACILITIES_KEY,
                obj.getAttribute(CswPersistenceObject.FACILITIES_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.TRANSPORTATION_KEY,
                obj.getAttribute(CswPersistenceObject.TRANSPORTATION_KEY)));
        attrs.add(createAttributeType(CswPersistenceObject.UTILITIES_KEY,
                obj.getAttribute(CswPersistenceObject.UTILITIES_KEY)));

        attrs.add(createAttributeType(
                CswPersistenceObject.QUERY_OVERLAP_EXTENT_KEY,
                obj.getAttribute(CswPersistenceObject.QUERY_OVERLAP_EXTENT_KEY)));

        return attrs;
    }

    /**
     * Utility method to create a {@link SpatialFilter} from the given
     * {@link CswPersistenceObject}.  This method will extract the geography
     * extent information from the <code>obj</code> argument.
     *
     * @param obj The {@link CswPersistenceObject} containing the spatial query
     *                 information.
     * @return New {@link SpatialFilter}.
     */
    private SpatialFilter generateSpatialFilter(CswPersistenceObject obj) {
        SpatialFilter filter = null;
        EnvelopeN envelope = null;
        ObjectFactory factory = null;

        if (obj == null) {
            throw new NullPointerException("persistence object cannot be null");
        }

        try {
            factory = new ObjectFactory();

            filter = factory.createSpatialFilter();
            envelope = factory.createEnvelopeN();

            envelope.setXMin(Double.valueOf(obj.getAttribute(
                        CswPersistenceObject.QUERY_EXTENT_XMIN)));
            envelope.setYMin(Double.valueOf(obj.getAttribute(
                        CswPersistenceObject.QUERY_EXTENT_YMIN)));
            envelope.setXMax(Double.valueOf(obj.getAttribute(
                        CswPersistenceObject.QUERY_EXTENT_XMAX)));
            envelope.setYMax(Double.valueOf(obj.getAttribute(
                        CswPersistenceObject.QUERY_EXTENT_YMAX)));

            filter.setEnvelopeN(envelope);
            filter.setWhereClause("");
            filter.setSearchOrder("");
            filter.setSpatialRel("");
            filter.setSpatialRelDescription("");
            filter.setGeometryFieldName("");
        } catch (JAXBException ex) {
            LOG.warn("JAXBException occurred creating spatial filter", ex);
        }

        return filter;
    }

    /**
     * Utility method to create a go-between {@link CswPersistenceObject} object from
     * an {@link IQuery}.
     *
     * @param query The {@link IQuery} used to create the {@link CswPersistenceObject}.
     * @return New {@link CswPersistenceObject} representing the CS/W query.
     * @throws PersonalizationException Thrown if there was an exception with the
     *                         {@link IPersonalizationContext}.
     * @throws NullPointerException Thrown if the <code>query</code> argument is <code>null</code>.
     */
    private CswPersistenceObject createPersistenceObject(IQuery query)
        throws PersonalizationException {
        CswPersistenceObject obj = null;
        CatalogQueryType catalogQuery = null;
        EnvelopeN envelope = null;

        if (query == null) {
            throw new NullPointerException("query cannot be null");
        }

        if (!(query.getQuery() instanceof CatalogQueryType)) {
            throw new IllegalArgumentException("Invalid query, query type: " +
                query.getType().name() + " is not supported.");
        }

        obj = new CswPersistenceObject();

        obj.setAttribute(CswPersistenceObject.QUERY_NAME_KEY, query.getName());
        obj.setAttribute(CswPersistenceObject.QUERY_DESCRIPTION_KEY,
            query.getDescription());
        obj.setAttribute(CswPersistenceObject.QUERY_ID_KEY,
            query.getId().toString());
        obj.setAttribute(CswPersistenceObject.MAX_RESULTS_KEY,
            String.valueOf(query.getQuery().getMaxResults()));

        catalogQuery = (CatalogQueryType) query.getQuery();

        obj.setAttribute(CswPersistenceObject.CATALOG_ID_KEY,
            catalogQuery.getCatalogService().getId());

        envelope = (EnvelopeN) catalogQuery.getSpatialFilter().getEnvelopeN();

        obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_XMIN,
            String.valueOf(envelope.getXMin()));
        obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_YMIN,
            String.valueOf(envelope.getYMin()));
        obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_XMAX,
            String.valueOf(envelope.getXMax()));
        obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_YMAX,
            String.valueOf(envelope.getYMax()));

        obj.setAttribute(CswPersistenceObject.SEARCH_TERM_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.SEARCH_TERM_KEY));
        obj.setAttribute(CswPersistenceObject.LIVE_DATA_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.LIVE_DATA_KEY));
        obj.setAttribute(CswPersistenceObject.ADVANCED_QUERY_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.ADVANCED_QUERY_KEY));
        obj.setAttribute(CswPersistenceObject.USE_DATA_CATEGORIES,
            getExtendedAttributeValue(query,
                CswPersistenceObject.USE_DATA_CATEGORIES));
        obj.setAttribute(CswPersistenceObject.AGRICULTURE_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.AGRICULTURE_KEY));
        obj.setAttribute(CswPersistenceObject.BIOLOGY_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.BIOLOGY_KEY));
        obj.setAttribute(CswPersistenceObject.ADMIN_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.ADMIN_KEY));
        obj.setAttribute(CswPersistenceObject.ATMOSPHERIC_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.ATMOSPHERIC_KEY));
        obj.setAttribute(CswPersistenceObject.BUSINESS_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.BUSINESS_KEY));
        obj.setAttribute(CswPersistenceObject.ELEVATION_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.ELEVATION_KEY));
        obj.setAttribute(CswPersistenceObject.ENVIRONMENT_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.ENVIRONMENT_KEY));
        obj.setAttribute(CswPersistenceObject.GEOLOGICAL_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.GEOLOGICAL_KEY));
        obj.setAttribute(CswPersistenceObject.HUMAN_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.HUMAN_KEY));
        obj.setAttribute(CswPersistenceObject.IMAGERY_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.IMAGERY_KEY));
        obj.setAttribute(CswPersistenceObject.MILITARY_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.MILITARY_KEY));
        obj.setAttribute(CswPersistenceObject.INLAND_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.INLAND_KEY));
        obj.setAttribute(CswPersistenceObject.LOCATIONS_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.LOCATIONS_KEY));
        obj.setAttribute(CswPersistenceObject.OCEANS_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.OCEANS_KEY));
        obj.setAttribute(CswPersistenceObject.CADASTRAL_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.CADASTRAL_KEY));
        obj.setAttribute(CswPersistenceObject.CULTURAL_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.CULTURAL_KEY));
        obj.setAttribute(CswPersistenceObject.FACILITIES_KEY,
            getExtendedAttributeValue(query, CswPersistenceObject.FACILITIES_KEY));
        obj.setAttribute(CswPersistenceObject.TRANSPORTATION_KEY,
            getExtendedAttributeValue(query,
                CswPersistenceObject.TRANSPORTATION_KEY));
        obj.setAttribute(CswPersistenceObject.UTILITIES_KEY,

⌨️ 快捷键说明

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