Changeset 27718

Show
Ignore:
Timestamp:
27.06.2013 16:59:01 (6 years ago)
Author:
sjm84
Message:

Phase two of fixing collectionConfig templates being incorrect in Greenbug

Files:
1 modified

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);