Changeset 27718 for main/trunk


Ignore:
Timestamp:
2013-06-27T16:59:01+12:00 (11 years ago)
Author:
sjm84
Message:

Phase two of fixing collectionConfig templates being incorrect in Greenbug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DebugService.java

    r27165 r27718  
    197197        String nameToGet = (String) params.get("name");
    198198        String matchToGet = (String) params.get("match");
     199        String xPath = (String) params.get("xpath");
    199200
    200201        String fullNamespace;
     
    218219            XMLConverter converter = new XMLConverter();
    219220            Document xslDoc = converter.getDOM(xslFile, "UTF-8");
    220 
    221             NodeList templateElems = xslDoc.getElementsByTagNameNS(fullNamespace, nodeName);
     221            Element rootElem = xslDoc.getDocumentElement();
     222
     223            if (xPath != null && xPath.length() > 0)
     224            {
     225                String[] pathSegments = xPath.split("/");
     226                for (int i = 1; i < pathSegments.length; i++)
     227                {
     228                    String currentSegment = pathSegments[i];
     229                    int count = 1;
     230                    if (currentSegment.contains("["))
     231                    {
     232                        count = Integer.parseInt(currentSegment.substring(currentSegment.indexOf("[") + 1, currentSegment.indexOf("]")));
     233                        currentSegment = currentSegment.substring(0, currentSegment.indexOf("["));
     234                    }
     235                    Node child = rootElem.getFirstChild();
     236                    while (count > 0)
     237                    {
     238                        if (child.getNodeType() == Node.ELEMENT_NODE && ((Element) child).getNodeName().equals(currentSegment))
     239                        {
     240                            rootElem = (Element) child;
     241                            count--;
     242                        }
     243                        child = child.getNextSibling();
     244                    }
     245                }
     246            }
     247
     248            NodeList templateElems = rootElem.getElementsByTagNameNS(fullNamespace, nodeName);
    222249
    223250            if (nameToGet != null && nameToGet.length() != 0)
     
    323350        String nameToSave = (String) params.get("name");
    324351        String matchToSave = (String) params.get("match");
     352        String xPath = (String) params.get("xpath");
    325353        String xml = (String) params.get("xml");
    326354
     
    345373            XMLConverter converter = new XMLConverter();
    346374            Document xslDoc = converter.getDOM(xslFile, "UTF-8");
     375
     376            Element rootElem = xslDoc.getDocumentElement();
     377
     378            if (xPath != null && xPath.length() > 0)
     379            {
     380                String[] pathSegments = xPath.split("/");
     381                for (int i = 1; i < pathSegments.length; i++)
     382                {
     383                    String currentSegment = pathSegments[i];
     384                    int count = 1;
     385                    if (currentSegment.contains("["))
     386                    {
     387                        count = Integer.parseInt(currentSegment.substring(currentSegment.indexOf("[") + 1, currentSegment.indexOf("]")));
     388                        currentSegment = currentSegment.substring(0, currentSegment.indexOf("["));
     389                    }
     390                    Node child = rootElem.getFirstChild();
     391                    while (count > 0)
     392                    {
     393                        if (child.getNodeType() == Node.ELEMENT_NODE && ((Element) child).getNodeName().equals(currentSegment))
     394                        {
     395                            rootElem = (Element) child;
     396                            count--;
     397                        }
     398                        child = child.getNextSibling();
     399                    }
     400                }
     401            }
    347402
    348403            NodeList templateElems = xslDoc.getElementsByTagNameNS(fullNamespace, nodeName);
     
    472527            XMLConverter converter = new XMLConverter();
    473528            Document xslDoc = converter.getDOM(xslFile, "UTF-8");
     529            Element xslDocElem = xslDoc.getDocumentElement();
     530
     531            if (locationName.equals("collectionConfig"))
     532            {
     533                GSXSLT.modifyCollectionConfigForDebug(xslDocElem);
     534            }
    474535
    475536            Element templateList = this.doc.createElement("templateList");
    476537            StringBuilder templateListString = new StringBuilder("[");
    477538
    478             NodeList xslTemplateElems = xslDoc.getElementsByTagNameNS(GSXML.XSL_NAMESPACE, "template");
    479             NodeList gsfTemplateElems = xslDoc.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "template");
     539            NodeList xslTemplateElems = xslDocElem.getElementsByTagNameNS(GSXML.XSL_NAMESPACE, "template");
     540            NodeList gsfTemplateElems = xslDocElem.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "template");
    480541            for (int i = 0; i < xslTemplateElems.getLength() + gsfTemplateElems.getLength(); i++)
    481542            {
     
    495556                {
    496557                    templateListString.append("\"match\":\"" + currentElem.getAttribute(GSXML.MATCH_ATT) + "\",");
     558                }
     559
     560                if (currentElem.getUserData("xpath") != null)
     561                {
     562                    templateListString.append("\"xpath\":\"" + currentElem.getUserData("xpath") + "\",");
    497563                }
    498564                templateListString.deleteCharAt(templateListString.length() - 1);
Note: See TracChangeset for help on using the changeset viewer.