Revision 2749 trunk/applications/appCatalogYNomenclatorClient/src/es/gva/cit/catalogClient/drivers/SRWCatalogServiceDriver.java

View differences:

SRWCatalogServiceDriver.java
85 85
            prefix = prefix + ":";
86 86
        }
87 87

  
88
        //Hay que capturar la excepci?n. 
89
        int numberOfRecords = Integer.parseInt(XMLTree.searchNodeValue(
90
                    nodes[0], prefix + "numberOfRecords"));
88
        int numberOfRecords = getNumberOfRecords(nodes[0],
89
        		prefix + "numberOfRecords",
90
				null);
91 91

  
92
        if (numberOfRecords == -1) {
93
            return null;
94
        }   
95
        
96
        answerNodes = createAnswerTree(numberOfRecords, firstRecord, nodes[0],
97
                url,prefix);
98

  
99
        return answerNodes;
100
    }
101
    
102
    /**
103
     * It returns an array of nodes with:
104
     *         1st position -> tree with information of the answer
105
     *          Next positions -> One result for each position
106
     * @param numberOfRecords
107
     * Number of records returned by the query
108
     * @param firstRecord
109
     * Number of the first record
110
     * @param node
111
     * Tree returned by the server
112
     * @param url
113
     * Server URL
114
     * @param prefix
115
     * Tags Prefix
116
     * @return
117
     */
118
    public Node[] createAnswerTree(int numberOfRecords, int firstRecord,
119
        Node node, URL url,String prefix) {
120
        Node[] answerNodes = null;
121

  
92 122
        if (numberOfRecords > 10) {
93 123
            answerNodes = new Node[11];
94 124
        } else {
......
98 128
        answerNodes[0] = XMLTreeNumberOfRecordsAnswer.getNode(numberOfRecords,
99 129
                firstRecord, firstRecord + numberOfRecords);
100 130

  
101
        nodes = XMLTree.searchMultipleNode(nodes[0],
131
        Node[] auxNodes = XMLTree.searchMultipleNode(node,
102 132
                prefix + "records->" + prefix + "record");
103 133

  
104
        for (int i = 1; (i <= numberOfRecords) && (i <= 10); i++)
105
            answerNodes[i] = nodes[i - 1];
134
        for (int i = 1;
135
                (i <= numberOfRecords) && (i <= 10) &&
136
                (i <= (numberOfRecords - firstRecord + 1)); i++)
137
            answerNodes[i] = auxNodes[i - 1];
106 138

  
107 139
        return answerNodes;
108 140
    }
109

  
141
    
142
    /**
143
     * Create the KVP for the HTTP GET Method.
144
     * @return
145
     */
110 146
    public NameValuePair[] getMessageCapabilities() {
111 147
        NameValuePair nvp1 = new NameValuePair("OPERATION", "explain");
112 148
        NameValuePair nvp2 = new NameValuePair("VERSION", this.version);
113 149

  
114 150
        return new NameValuePair[] { nvp1, nvp2 };
115 151
    }
116

  
152
    
153
    /**
154
     * Create the KVP for the HTTP GET Method.
155
     * @return
156
     */
117 157
    public NameValuePair[] getMessageRecords(Query query, int firstRecord) {
118 158
        SRWQuery qsrwd = new SRWQuery(query);
119 159

  

Also available in: Unified diff