Example usage for javax.xml.xpath XPath evaluate

List of usage examples for javax.xml.xpath XPath evaluate

Introduction

In this page you can find the example usage for javax.xml.xpath XPath evaluate.

Prototype

public Object evaluate(String expression, InputSource source, QName returnType) throws XPathExpressionException;

Source Link

Document

Evaluate an XPath expression in the context of the specified InputSource and return the result as the specified type.

Usage

From source file:isl.FIMS.servlet.imports.ImportXML.java

private Document createAdminPart(String fileId, String type, Document doc, String username) {
    //create admin element
    String query = "name(//admin/parent::*)";
    DBFile dbf = new DBFile(this.DBURI, this.systemDbCollection + type, type + ".xml", this.DBuser,
            this.DBpassword);
    String parentOfAdmin = dbf.queryString(query)[0];
    Element parentElement = (Element) doc.getElementsByTagName(parentOfAdmin).item(0);
    Element admin = doc.createElement("admin");
    parentElement.appendChild(admin);//from w ww .  j a v a 2s .  c o  m

    //create id element
    String id = fileId.split(type)[1];
    Element idE = doc.createElement("id");
    idE.appendChild(doc.createTextNode(id));
    admin.appendChild(idE);

    //create uri_id element
    String uri_name = "";
    try {
        uri_name = DMSTag.valueOf("uri_name", "target", type, this.conf)[0];
    } catch (DMSException ex) {
        ex.printStackTrace();
    }
    String uriValue = this.URI_Reference_Path + uri_name + "/" + id;
    String uriPath = UtilsXPaths.getPathUriField(type);
    Element uriId = doc.createElement("uri_id");
    uriId.appendChild(doc.createTextNode(uriValue));
    admin.appendChild(uriId);
    if (!uriPath.equals("")) {
        try {
            XPath xPath = XPathFactory.newInstance().newXPath();
            NodeList nodes = (NodeList) xPath.evaluate(uriPath, doc.getDocumentElement(),
                    XPathConstants.NODESET);
            Node oldChild = nodes.item(0);
            if (oldChild != null) {
                oldChild.setTextContent(uriValue);
            }
        } catch (XPathExpressionException ex) {
            ex.printStackTrace();
        }
    }

    //create lang element
    Element lang = doc.createElement("lang");
    lang.appendChild(doc.createTextNode(this.lang));
    admin.appendChild(lang);

    //create organization element
    Element organization = doc.createElement("organization");
    organization.appendChild(doc.createTextNode(this.getUserGroup(username)));
    admin.appendChild(organization);

    //create creator element
    Element creator = doc.createElement("creator");
    creator.appendChild(doc.createTextNode(username));
    admin.appendChild(creator);

    //create creator element
    Element saved = doc.createElement("saved");
    saved.appendChild(doc.createTextNode("yes"));
    admin.appendChild(saved);

    //create locked element
    Element locked = doc.createElement("locked");
    locked.appendChild(doc.createTextNode("no"));
    admin.appendChild(locked);
    Element status = doc.createElement("status");
    if (GetEntityCategory.getEntityCategory(type).equals("primary")) {
        status.appendChild(doc.createTextNode("unpublished"));
    }
    admin.appendChild(status);

    //create version elemnt
    Element versions = doc.createElement("versions");

    //create versionidr elememt
    Element versionId = doc.createElement("versionId");
    versionId.appendChild(doc.createTextNode("1"));
    versions.appendChild(versionId);

    //create versionUser elememt
    Element versionUser = doc.createElement("versionUser");
    versionUser.appendChild(doc.createTextNode(username));
    versions.appendChild(versionUser);

    //create versionDate elememt
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date();
    Element versionDate = doc.createElement("versionDate");
    versionDate.appendChild(doc.createTextNode(dateFormat.format(date)));
    versions.appendChild(versionDate);

    admin.appendChild(versions);
    //create read element
    Element read = doc.createElement("read");
    read.appendChild(doc.createTextNode(username));
    admin.appendChild(read);

    //create write element
    Element write = doc.createElement("write");
    write.appendChild(doc.createTextNode(username));
    admin.appendChild(write);

    //create status element
    //create imported element
    Element imported = doc.createElement("imported");
    imported.appendChild(doc.createTextNode(username));
    admin.appendChild(imported);

    return doc;
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testPerformEntityResolutionWithDetermFactors() throws Exception {
    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    InputStream attributeParametersStream = getClass()
            .getResourceAsStream("/xml/TestAttributeParametersWithDeterm.xml");
    entityResolutionMessageHandler.setAttributeParametersStream(attributeParametersStream);
    testRequestMessageInputStream = getClass()
            .getResourceAsStream("/xml/EntityMergeRequestMessageForDeterm.xml");
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);//from  w  w  w  .  ja  va2s.  c o  m
    assertNotNull(entityContainerNode);
    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            null);

    resultDocument.normalizeDocument();
    // LOG.info(converter.toString(resultDocument));
    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:OriginalRecordReference", resultDocument,
            XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    for (int i = 0; i < entityNodes.getLength(); i++) {
        Element e = (Element) entityNodes.item(i);
        String entityIdRef = e.getAttributeNS(EntityResolutionNamespaceContext.STRUCTURES_NAMESPACE, "ref");
        assertNotNull(entityIdRef);
        assertNotNull(xp.evaluate("//merge-result-ext:Entity[@s:id='" + entityIdRef + "']", resultDocument,
                XPathConstants.NODE));
    }
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Ignore // only use this test to explore performance issues
@Test//from   ww  w  .  jav  a 2s  .  com
public void testSortLargeRecordSet() throws Exception {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    Document entityMergeRequestDocument = dbf.newDocumentBuilder()
            .parse(new File("src/test/resources/xml/EntityMergeRequestMessageSortTest.xml"));
    Document attributeParametersDocument = dbf.newDocumentBuilder()
            .parse(new File("src/test/resources/xml/TestAttributeParameters.xml"));
    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    Element entityContainerElement = (Element) xp.evaluate(
            "/merge:EntityMergeRequestMessage/merge:MergeParameters/er-ext:EntityContainer",
            entityMergeRequestDocument, XPathConstants.NODE);
    NodeList entityNodes = (NodeList) xp.evaluate("er-ext:Entity", entityContainerElement,
            XPathConstants.NODESET);
    int newEntityGroupCount = 100;
    for (int i = 0; i < newEntityGroupCount; i++) {
        for (int j = 0; j < entityNodes.getLength(); j++) {
            Element newEntityElement = (Element) entityNodes.item(j).cloneNode(true);
            entityContainerElement.appendChild(newEntityElement);
        }
    }
    NodeList newEntityNodes = (NodeList) xp.evaluate("er-ext:Entity", entityContainerElement,
            XPathConstants.NODESET);
    assertEquals((newEntityGroupCount + 1) * entityNodes.getLength(), newEntityNodes.getLength());
    LOG.info("Large Record Set sort test, record count=" + newEntityNodes.getLength());
    // instrument the following line as needed for performance testing
    @SuppressWarnings("unused")
    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerElement,
            attributeParametersDocument.getDocumentElement(), makeEntityResolutionConfigurationNode(1 + ""));
    // LOG.info(new XmlConverter().toString(resultDocument));
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

/**
 * This unit test will read a entity merge request document that has given and sur names in mixed case.
 * It will then set an ER threshold of 3 and pass in six entities so ER is skipped.
 * However, the results should still be sorted and passed back in order.
 * /*from  ww  w  .  j  a  va  2 s .  com*/
 * @throws Exception
 */

@Test
public void testRecordLimitSorting() throws Exception {

    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter
            .toDOMDocument(getClass().getResourceAsStream("/xml/EntityMergeRequestMessageMixedCase.xml"));

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);
    assertNotNull(entityContainerNode);

    Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("2");

    Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument();

    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode,
            attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode);

    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(testNamespaceContext);
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    int inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(6, entityNodes.getLength());
    String recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("true", recordLimitExceeded);

    assertEquals("DUCK", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Donald", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MOUSE", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("FRANK", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("mouse", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("macky", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MouSe", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Mickey", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MOUSE", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Minn", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("Mouse", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("MINNY", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    //LOG.info(new XmlConverter().toString(resultDocument));

}

From source file:org.ala.harvester.FlickrHarvester.java

/**
 * Process a single image, do the document mapping etc
 * // w ww  . java2  s  . co  m
 * @param infosourceId
 * @param imageIndex
 * @param currentResDom
 * @throws Exception
 */
private boolean processSingleImage(int infosourceId, int imageIndex, Document currentResDom) throws Exception {

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    String xPathToPhotoId = "/rsp/photos/photo[" + imageIndex + "]/@id";
    String photoId = (String) xpath.evaluate(xPathToPhotoId, currentResDom, XPathConstants.STRING);
    logger.info("Handling photo ID: " + photoId);

    final String flickrMethod = "flickr.photos.getInfo";

    // Calls the Flickr's Photo Info API to determine whether the photo
    // comes from Australia or not.
    String photoInfoFlickrUrl = this.flickrRestBaseUrl + "/" + "?method=" + flickrMethod + "&" + "api_key="
            + this.flickrApiKey + "&" + "photo_id=" + photoId;

    System.out.println("PHOTO URL:" + photoInfoFlickrUrl);

    org.w3c.dom.Document photoInfoDom = null;

    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();
    // Create a method instance.
    GetMethod method = new GetMethod(photoInfoFlickrUrl);

    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
    method.getParams().setParameter(HttpMethodParams.HTTP_ELEMENT_CHARSET, "UTF-8");
    method.getParams().setParameter(HttpMethodParams.HTTP_URI_CHARSET, "UTF-8");

    logger.debug(
            "Fetching info. for photo with ID " + photoId + " from " + "`" + photoInfoFlickrUrl + "`" + "\n");

    try {
        int statusCode = client.executeMethod(method);

        if (statusCode != HttpStatus.SC_OK) {
            String errMsg = "HTTP GET to " + "`" + photoInfoFlickrUrl + "`" + " returned non HTTP OK code.  "
                    + "Returned code " + statusCode + " and message " + method.getStatusLine() + "\n";
            method.releaseConnection();
            logger.error(errMsg);
            throw new Exception(errMsg);
        }

        InputStream responseStream = method.getResponseBodyAsStream();

        // Instantiates a DOM builder to create a DOM of the response.
        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder domBuilder = domFactory.newDocumentBuilder();

        photoInfoDom = domBuilder.parse(responseStream);

    } catch (Exception domCreationErr) {
        throw new Exception("Failed to create DOM representation of GET response.", domCreationErr);

    } finally {
        // Release the connection.
        method.releaseConnection();
    }

    // Check for Flickr's error.
    if (!isDocExtractionSuccessful(photoInfoDom)) {
        throw new Exception("Flickr error response for fetching single image information.");
    }

    if (System.getProperty("overwrite") != null && "false".equals(System.getProperty("overwrite"))) {
        String photoPageUrl = (String) xpath.evaluate("/rsp/photo/urls/url[@type=\"photopage\"]/text()",
                photoInfoDom, XPathConstants.STRING);

        logger.debug("photo page URL: " + photoPageUrl);
        org.ala.model.Document doc = this.repository.getDocumentByGuid(photoPageUrl);
        if (doc != null) {
            logger.debug("Document with URI already harvested. Skipping: " + photoPageUrl);
            return true;
        }
    }

    // Determines whether photo has geo-coded tag from Australia.
    // If so, pass onto DocumentMapper.
    if (isPhotoFromAustralia(photoInfoDom)) {

        try {
            String document = (DOMUtils.domToString(photoInfoDom));
            // FIXME flickr GUID ???
            List<ParsedDocument> parsedDocs = documentMapper.map("", document.getBytes());
            for (ParsedDocument parsedDoc : parsedDocs) {
                this.repository.storeDocument(infosourceId, parsedDoc);
                debugParsedDoc(parsedDoc);
            }
            return false;
        } catch (Exception docMapperErr) {
            // Skipping over errors here and proceeding to next document.
            logger.error("Problem processing image. " + docMapperErr.toString() + ", Problem processing: "
                    + photoInfoFlickrUrl, docMapperErr);
        }
    } else {
        logger.debug("Photo is unAustralian: " + photoInfoFlickrUrl);
    }

    return false;
}

From source file:com.cisco.dvbu.ps.common.adapters.config.SoapHttpConfig.java

private void parseCallback(Element eElement) throws AdapterException {
    XPath xpath = XPathFactory.newInstance().newXPath();
    try {//from w ww .  jav  a2  s .c  o  m
        SoapHttpConnectorCallback cb = new SoapHttpConnectorCallback();
        cb.setOperation(eElement.getAttribute(AdapterConstants.CONNECTOR_SE_NAME));
        //         log.debug("Operation: " + cb.getOperation());
        cb.setEndpoint(eElement.getAttribute(AdapterConstants.CONNECTOR_SH_ENDPOINT));
        //         log.debug("Endpoint: " + cb.getEndpoint());
        cb.setName(cb.getEndpoint() + AdapterConstants.CONNECTOR_EP_SEPARATOR + cb.getOperation());
        Element e = (Element) xpath.evaluate(AdapterConstants.XPATH_CONN_CB_SOAPACTION, eElement,
                XPathConstants.NODE);
        cb.setAction(e.getTextContent());
        //         log.debug(e.getNodeName() + ": " + e.getTextContent());
        e = (Element) xpath.evaluate(AdapterConstants.XPATH_CONN_CB_RQ_BODY, eElement, XPathConstants.NODE);
        cb.setRequestBodyXsl(e.getTextContent().trim());
        //         log.debug(e.getNodeName() + ": " + e.getTextContent());
        e = (Element) xpath.evaluate(AdapterConstants.XPATH_CONN_CB_RS_BODY, eElement, XPathConstants.NODE);
        cb.setResponseBodyXsl(e.getTextContent().trim());
        //         log.debug(e.getNodeName() + ": " + e.getTextContent());
        connCallbacks.put(cb.getName(), cb);
    } catch (Exception e) {
        log.error("Configuration File Error! One or more mandatory configuration options are missing");
        throw new AdapterException(401,
                "Configuration File Error! One or more mandatory configuration options are missing.", e);
    }
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testRecordLimit() throws Exception {

    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);//  ww w .ja  v  a  2 s.co m
    assertNotNull(entityContainerNode);

    Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(
            String.valueOf(Integer.MAX_VALUE));

    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    int inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    String recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(6 + "");

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(null);

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("not an int");

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(2 + "");

    Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument();
    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode,
            attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(6, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("true", recordLimitExceeded);

    // LOG.info(new XmlConverter().toString(resultDocument));
    NodeList statNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality",
            resultDocument, XPathConstants.NODESET);
    assertEquals(6, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:AttributeXPath",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceMeanInRecord",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceStandardDeviationInRecord",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
}

From source file:com.esri.gpt.server.openls.provider.services.route.DetermineRouteProvider.java

/**
 * //from  ww  w. j a  va  2 s.co m
 * @param context
 * @param ndReq
 * @param xpath
 * @throws Exception
 */
private void parseRequest(OperationContext context, Node ndReq, XPath xpath) throws Exception {
    DetermineRouteParams routeParams = new DetermineRouteParams();
    Node ndRoutePlan = (Node) xpath.evaluate("xls:RoutePlan", ndReq, XPathConstants.NODE);
    if (ndRoutePlan != null) {
        RoutePlan routePlan = new RoutePlan();
        Node ndRoutePreference = (Node) xpath.evaluate("xls:RoutePreference", ndRoutePlan, XPathConstants.NODE);
        if (ndRoutePreference != null) {
            routePlan.setRoutePreference(ndRoutePreference.getTextContent());
        }
        Node ndWayPointList = (Node) xpath.evaluate("xls:WayPointList", ndRoutePlan, XPathConstants.NODE);
        if (ndWayPointList != null) {
            HashMap<String, Point> wayPointList = new HashMap<String, Point>();
            Node ndStartPoint = (Node) xpath.evaluate("xls:StartPoint", ndWayPointList, XPathConstants.NODE);
            if (ndStartPoint != null) {
                Node ndStartPOI = (Node) xpath.evaluate("xls:POI", ndStartPoint, XPathConstants.NODE);
                if (ndStartPOI != null) {
                    ndStartPoint = ndStartPOI;
                }
                Node ndStartPos = (Node) xpath.evaluate("xls:Position/gml:Point/gml:pos", ndStartPoint,
                        XPathConstants.NODE);
                Point point = new Point();
                if (ndStartPos != null) {
                    String[] coords = ndStartPos.getTextContent().split(" ");
                    point.setX(coords[0]);
                    point.setY(coords[1]);
                } else {
                    geocode(context, ndStartPoint, xpath, point);
                }
                wayPointList.put("start", point);
            }
            Node ndViaPoint = (Node) xpath.evaluate("xls:ViaPoint", ndWayPointList, XPathConstants.NODE);
            if (ndViaPoint != null) {
                Node ndViaPOI = (Node) xpath.evaluate("xls:POI", ndStartPoint, XPathConstants.NODE);
                if (ndViaPOI != null) {
                    ndViaPoint = ndViaPOI;
                }
                Point point = new Point();
                Node ndViaPos = (Node) xpath.evaluate("xls:Position/gml:Point/gml:pos", ndViaPoint,
                        XPathConstants.NODE);
                if (ndViaPos != null) {
                    String[] coords = ndViaPos.getTextContent().split(" ");
                    point.setX(coords[0]);
                    point.setY(coords[1]);
                } else {
                    geocode(context, ndViaPoint, xpath, point);
                }
                wayPointList.put("via", point);
            }
            Node ndEndPoint = (Node) xpath.evaluate("xls:EndPoint", ndWayPointList, XPathConstants.NODE);
            if (ndEndPoint != null) {
                Node ndEndPOI = (Node) xpath.evaluate("xls:POI", ndEndPoint, XPathConstants.NODE);
                if (ndEndPOI != null) {
                    ndEndPoint = ndEndPOI;
                }
                Node ndEndPos = (Node) xpath.evaluate("xls:Position/gml:Point/gml:pos", ndEndPoint,
                        XPathConstants.NODE);
                Point point = new Point();
                if (ndEndPos != null) {
                    String[] coords = ndEndPos.getTextContent().split(" ");
                    point.setX(coords[0]);
                    point.setY(coords[1]);
                } else {
                    geocode(context, ndEndPoint, xpath, point);
                }
                wayPointList.put("end", point);
            }
            routePlan.setWayPointList(wayPointList);
        }

        Node ndAvoidList = (Node) xpath.evaluate("xls:AvoidList", ndRoutePlan, XPathConstants.NODE);
        if (ndAvoidList != null) {
            Node ndAvoidPOI = (Node) xpath.evaluate("xls:POI", ndAvoidList, XPathConstants.NODE);
            if (ndAvoidPOI != null) {
                ndAvoidList = ndAvoidPOI;
            }
            HashMap<String, Point> avoidPointList = new HashMap<String, Point>();
            Node ndStartPos = (Node) xpath.evaluate("xls:Position/gml:Point/gml:pos", ndAvoidList,
                    XPathConstants.NODE);
            Point point = new Point();
            if (ndStartPos != null) {
                String[] coords = ndStartPos.getTextContent().split(" ");
                point.setX(coords[0]);
                point.setY(coords[1]);
            } else {
                geocode(context, ndAvoidList, xpath, point);
            }
            avoidPointList.put("avoid", point);
            routePlan.setAvoidPointList(avoidPointList);
        }

        routeParams.setRoutePlan(routePlan);
    }
    Node ndRouteInst = (Node) xpath.evaluate("xls:RouteInstructionsRequest", ndReq, XPathConstants.NODE);
    if (ndRouteInst != null) {
        RouteInstructionsRequest routeInst = new RouteInstructionsRequest();
        String format = (String) xpath.evaluate("@format", ndRouteInst, XPathConstants.STRING);
        String provideGeometry = (String) xpath.evaluate("@provideGeometry", ndRouteInst,
                XPathConstants.STRING);
        routeInst.setFormat(format);
        routeInst.setProvideGeometry(provideGeometry);
        routeParams.setRouteInstructions(routeInst);
    }
    Node ndRouteMap = (Node) xpath.evaluate("xls:RouteMapRequest", ndReq, XPathConstants.NODE);
    if (ndRouteMap != null) {
        RouteMap routeMap = new RouteMap();
        Node ndOutput = (Node) xpath.evaluate("xls:Output", ndRouteMap, XPathConstants.NODE);
        if (ndOutput != null) {
            ImageOutput imgOutput = new ImageOutput();
            Output output = new Output();
            String format = (String) xpath.evaluate("@format", ndOutput, XPathConstants.STRING);
            String width = (String) xpath.evaluate("@width", ndOutput, XPathConstants.STRING);
            String height = (String) xpath.evaluate("@height", ndOutput, XPathConstants.STRING);
            output.setFormat(format);
            output.setWidth(width);
            output.setHeight(height);
            imgOutput.setOutput(output);
            routeMap.setImageOutput(imgOutput);
        }
        routeParams.setRouteMap(routeMap);
    }
    context.getRequestOptions().setDetermineRouteParams(routeParams);

}

From source file:org.ala.harvester.FlickrHarvester.java

/**
 * Determines whether a Flickr photo has geo-coded location with Australia
 * as the country. <br />//from  w ww. ja  v a  2  s. c om
 * 
 * XPath used to extract this information is
 * <code>/rsp/photo/location/country/text()</code> <br />
 * 
 * Non case-sensitive String comparison is performed.
 * 
 * @param photoInfoXmlDom
 *            DOM representation of XML result from calling
 *            <code>flickr.photos.search</code> Flickr method.
 * 
 * @return <code>true</code> if photo has geo-coded location for Australia,
 *         <code>false</code> otherwise.
 * 
 * @throws csiro.diasb.protocolhandlers.Exception
 *             On error.
 * 
 * @since v0.4
 */
private boolean isPhotoFromAustralia(org.w3c.dom.Document photoInfoXmlDom) throws Exception {

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();

    if (photoInfoXmlDom == null) {
        String errMsg = "DOM of Photo Info. XML has null reference.";
        logger.error(errMsg);
        throw new Exception(errMsg);
    }

    String photoTitle = (String) xpath.evaluate("/rsp/photo/title/text()", photoInfoXmlDom,
            XPathConstants.STRING);
    String photoDescription = (String) xpath.evaluate("/rsp/photo/description/text()", photoInfoXmlDom,
            XPathConstants.STRING);
    String photoCountry = (String) xpath.evaluate("/rsp/photo/location/country/text()", photoInfoXmlDom,
            XPathConstants.STRING);

    //check the machine tags
    String xPathToTags = "/rsp/photo/tags/tag/text()";
    NodeList nl = (NodeList) xpath.evaluate(xPathToTags, photoInfoXmlDom, XPathConstants.NODESET);
    for (int i = 0; i < nl.getLength(); i++) {
        String content = nl.item(i).getNodeValue();
        if (content != null) {
            content = content.toLowerCase();
            if (content.contains("australia")) {
                return true;
            }
        }
    }

    if ("australia".compareToIgnoreCase(photoCountry) == 0
            || (photoTitle != null && photoTitle.toLowerCase().contains("australia"))
            || (photoDescription != null && photoDescription.toLowerCase().contains("australia"))) {
        return true;
    }

    return false;
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionNamespaceContextHelperTest.java

@Test
public void testReturnNamespaceMapFromNode() throws Exception {
    //Retrieve ER xpath context
    XPath xpath;
    xpath = XPathFactory.newInstance().newXPath();
    xpath.setNamespaceContext(new EntityResolutionNamespaceContext());

    //Get the test attribute parameters configuration
    InputStream attributeParametersStream = getClass().getResourceAsStream("/xml/TestAttributeParameters.xml");
    assertNotNull(attributeParametersStream);

    //Convert to DOM document
    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);

    Document attributeParametersDocument = converter.toDOMDocument(attributeParametersStream);

    NodeList parameterNodes = null;

    //Perform Xpath to retrieve attribute parameters
    parameterNodes = (NodeList) xpath.evaluate("er-ext:AttributeParameter",
            attributeParametersDocument.getDocumentElement(), XPathConstants.NODESET);

    //Loop through attribute parameters to retrieve namespace map associated with attribute xpath
    for (int i = 0; i < parameterNodes.getLength(); i++) {
        Node node = parameterNodes.item(i);

        String attributeXpathValue = xpath.evaluate("er-ext:AttributeXPath", node);
        Map<String, String> namespaceMap = EntityResolutionNamespaceContextHelpers
                .returnNamespaceMapFromNode(attributeXpathValue, node);

        for (Map.Entry<String, String> entry : namespaceMap.entrySet()) {
            LOG.debug("Namespace Map Entry, Prefix : " + entry.getKey() + " Namespace : " + entry.getValue());
        }/*from   w w w  .j  a v  a2s.  c o  m*/

        if (attributeXpathValue.equals("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName")) {
            assertEquals("http://niem.gov/niem/niem-core/2.0", namespaceMap.get("nc"));
            assertEquals("http://local.org/IEPD/Extensions/PersonSearchResults/1.0", namespaceMap.get("ext"));
        }

        if (attributeXpathValue.equals("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName")) {
            assertEquals("http://niem.gov/niem/niem-core/2.0", namespaceMap.get("nc"));
            assertEquals("http://local.org/IEPD/Extensions/PersonSearchResults/1.0", namespaceMap.get("ext"));
        }

    }
}