cswprofile.java

来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 520 行 · 第 1/2 页

JAVA
520
字号
            Source xsltSource = new StreamSource(this.getClass().getClassLoader()
                                                     .getResourceAsStream(metadataxslt));

            // Prepare output writer
            StringWriter writer = new StringWriter();
            StreamResult result = new StreamResult(writer);

            TransformerFactory xformFactory = TransformerFactory.newInstance();

            // Get an XSL Transformer object
            Transformer transformer = xformFactory.newTransformer(xsltSource);
            // Transform response string with xslt parser
            transformer.transform(responseSource, result);

            LOG.debug("CSW GetMetadataByIdResponse: " +
                result.getWriter().toString());

            if (usesMetadataResourceUrl) {
                record.setMetadataResourceURL(result.getWriter().toString());
            } else {
                record.setFullMetadata(result.getWriter().toString());
            }
        }
    }

    /**
     * Parse a CSW response.
     *
     * @remark The CSW response is parsed and the records collection is populated with
     * the result.The reponse is parsed based on the response xslt.
     * @param ="param1" The String response
     * @param ="param2" The recordlist which needs to be populated
     *
     * @param responseString
     * @param recordslist
     * @throws TransformerException
     * @throws ParserConfigurationException
     * @throws IOException
     * @throws SAXException
     * @throws XPathExpressionException
     */
    public void readCSWGetRecordsResponse(String responseString,
        CswRecords recordList)
        throws TransformerException, ParserConfigurationException, SAXException,
            IOException, XPathExpressionException {
        String RECORD_TAG = "Record";

        // Massage responseString as a proper object
        StringReader reader = new StringReader(responseString);
        Source responseSource = new StreamSource(reader);

        // Load xslt to parse responseString
        //File xsltFile = new File(responsexslt);
        //Source xsltSource = new StreamSource(xsltFile);
        Source xsltSource = new StreamSource(this.getClass().getClassLoader()
                                                 .getResourceAsStream(responsexslt));

        // Prepare output writer
        StringWriter writer = new StringWriter();
        StreamResult result = new StreamResult(writer);

        TransformerFactory xformFactory = TransformerFactory.newInstance();

        // Get an XSL Transformer object
        Transformer transformer = xformFactory.newTransformer(xsltSource);
        // Transform response string with xslt parser
        transformer.transform(responseSource, result);

        String response = result.getWriter().toString();

        LOG.debug("CSW GetRecords Response: " + response);

        InputStream responseStream = new ByteArrayInputStream(response.getBytes());

        // create xml document object
        // XML parser load doc specified by filename
        DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                                                        .newDocumentBuilder();
        Document doc = (Document) builder.parse(responseStream);

        // Get a list of nodes of which root is Profile tag
        NodeList recordNodes = doc.getElementsByTagName(RECORD_TAG);

        // create CswRecord and convert xml document node to each record
        XPath xpath = XPathFactory.newInstance().newXPath();

        for (int i = 0; i < recordNodes.getLength(); i++) {
            Node currNode = recordNodes.item(i);
            CswRecord record = new CswRecord();
            double minx;
            double miny;
            double maxx;
            double maxy;
            record.setId(xpath.evaluate("ID", currNode));
            record.setTitle(xpath.evaluate("Title", currNode));
            record.setAbstractData(xpath.evaluate("Abstract", currNode));
            record.setDateModified(xpath.evaluate("DateModified", currNode));
            record.setProvenance(xpath.evaluate("Provenance", currNode));

            // CHECK THIS PART
            String type = xpath.evaluate("Type", currNode);

            if (type.equalsIgnoreCase("livedata")) {
                record.setLiveDataOrMap(true);
            } else {
                record.setLiveDataOrMap(false);
            }

            try {
                minx = Double.parseDouble(xpath.evaluate("Envelope/MinX",
                            currNode));
                miny = Double.parseDouble(xpath.evaluate("Envelope/MinY",
                            currNode));
                maxx = Double.parseDouble(xpath.evaluate("Envelope/MaxX",
                            currNode));
                maxy = Double.parseDouble(xpath.evaluate("Envelope/MaxY",
                            currNode));

                record.setEnvelope(new Envelope(minx, miny, maxx, maxy));
            } catch (NumberFormatException ex) {
                LOG.debug("NumberFormatException occurred parsing CS/W record bounding box from CS/W response",
                    ex);
            }

            recordList.addRecord(record);
        }
    }

    public boolean SupportContentTypeQuery() {
        return false;
    }

    public boolean SupportSpatialQuery() {
        return false;
    }

    /**
     * replace special xml character
     *
     * @remark Encode special characters (such as &, ", <, >, ') to percent values.
     * </remarks>
     * <param name="data
     *
     * @param data
     */
    private String XmlEscape(String data) {
        data = data.replace("&", "&amp;");
        data = data.replace("<", "&lt;");
        data = data.replace(">", "&gt;");
        data = data.replace("\"", "&quot;");
        data = data.replace("'", "&apos;");

        return data;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public boolean isFilter_extentsearch() {
        return filter_extentsearch;
    }

    public void setFilter_extentsearch(boolean filter_extentsearch) {
        this.filter_extentsearch = filter_extentsearch;
    }

    public boolean isFilter_livedatamap() {
        return filter_livedatamap;
    }

    public void setFilter_livedatamap(boolean filter_livedatamap) {
        this.filter_livedatamap = filter_livedatamap;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getGetRecordByIdKVP() {
        return this.getRecordByIdKVP;
    }

    public void setGetRecordByIdKVP(String kvp) {
        this.getRecordByIdKVP = kvp;
    }

    public String getMetadataxslt() {
        return metadataxslt;
    }

    public void setMetadataxslt(String metadataxslt) {
        this.metadataxslt = metadataxslt;
    }

    public Transformer getMetadataxsltobj() {
        return metadataXsltObj;
    }

    public void setMetadataxsltobj(Transformer metadataxsltobj) {
        this.metadataXsltObj = metadataxsltobj;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRequestxslt() {
        return requestxslt;
    }

    public void setRequestxslt(String requestxslt) {
        this.requestxslt = requestxslt;
    }

    public Transformer getRequestxsltobj() {
        return requestXsltObj;
    }

    public void setRequestxsltobj(Transformer requestxsltobj) {
        this.requestXsltObj = requestxsltobj;
    }

    public String getResponsexslt() {
        return responsexslt;
    }

    public void setResponsexslt(String responsexslt) {
        this.responsexslt = responsexslt;
    }

    public Transformer getResponsexsltobj() {
        return responseXsltObj;
    }

    public void setResponsexsltobj(Transformer responsexsltobj) {
        this.responseXsltObj = responsexsltobj;
    }

    public String getGetRepositoryItemKVP() {
        return this.getRepositoryItemKVP;
    }

    public void setGetRepositoryItemKVP(String kvp) {
        this.getRepositoryItemKVP = kvp;
    }
}

⌨️ 快捷键说明

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