- Timestamp:
- 05/29/13 10:59:52 (11 years ago)
- Location:
- SRUClient/trunk/src/main/java/eu/clarin/sru/client
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUExplainRecordDataParser.java
r2946 r2953 58 58 } 59 59 60 logger.debug("parsing explain record data (version={} schema={})",60 logger.debug("parsing explain record data (version={}, schema={})", 61 61 version, recordSchema); 62 62 … … 82 82 throws XMLStreamException, SRUClientException { 83 83 84 /* 85 * explain (serverInfo, databaseInfo?, metaInfo?, indexInfo?, 86 * (recordInfo|schemaInfo)?, configInfo?) 87 */ 88 84 89 // explain/serverInfo 85 90 ServerInfo serverInfo = parseServerInfo(reader, namespace); … … 87 92 // explain/databaseInfo 88 93 if (XmlStreamReaderUtils.readStart(reader, namespace, "databaseInfo", false)) { 94 /* 95 * databaseInfo (title*, description*, (author | contact | extent | 96 * history | langUsage | restrictions | subjects | links | 97 * implementation)*) 98 */ 89 99 logger.debug("databaseInfo"); 100 101 while (XmlStreamReaderUtils.readStart(reader, 102 namespace, "title", false, true)) { 103 final String lang = XmlStreamReaderUtils.readAttributeValue(reader, null, "lang", false); 104 final String primary = XmlStreamReaderUtils.readAttributeValue(reader, null, "primary", false); 105 XmlStreamReaderUtils.consumeStart(reader); 106 String value = XmlStreamReaderUtils.readString(reader, false); 107 XmlStreamReaderUtils.readEnd(reader, namespace, "title"); 108 logger.debug("-> title = {} (primary={}, lang={})", value, primary, lang); 109 } // while 110 111 while (XmlStreamReaderUtils.readStart(reader, 112 namespace, "description", false, true)) { 113 XmlStreamReaderUtils.consumeStart(reader); 114 String value = XmlStreamReaderUtils.readString(reader, false); 115 XmlStreamReaderUtils.readEnd(reader, namespace, "description"); 116 logger.debug("-> description = {}", value); 117 } 118 90 119 XmlStreamReaderUtils.readEnd(reader, namespace, "databaseInfo", true); 91 120 } … … 93 122 // explain/metaInfo 94 123 if (XmlStreamReaderUtils.readStart(reader, namespace, "metaInfo", false)) { 124 /* 125 * metaInfo (dateModified, (aggregatedFrom, dateAggregated)?) 126 */ 95 127 logger.debug("metaInfo"); 96 128 XmlStreamReaderUtils.readEnd(reader, namespace, "metaInfo", true); … … 99 131 // explain/indexInfo 100 132 while (XmlStreamReaderUtils.readStart(reader, namespace, "indexInfo", false)) { 133 /* 134 * indexInfo ((set | index | sortKeywords)+) 135 */ 101 136 logger.debug("indexInfo"); 137 boolean found = false; 102 138 for (;;) { 103 /*104 * FIXME: SRU 2.0 has *either* <set> or <index>105 * check with SRU 1.2 ...106 */107 139 if (XmlStreamReaderUtils.readStart(reader, namespace, "set", false, true)) { 108 logger.debug(" set");140 logger.debug("-> set"); 109 141 // FIXME: read attributes 110 142 XmlStreamReaderUtils.consumeStart(reader); 111 143 112 144 XmlStreamReaderUtils.readEnd(reader, namespace, "set", true); 145 found = true; 113 146 } else if (XmlStreamReaderUtils.readStart(reader, namespace, "index", false, true)) { 114 logger.debug(" index");147 logger.debug("-> index"); 115 148 // FIXME: read attributes 116 149 XmlStreamReaderUtils.consumeStart(reader); 117 150 XmlStreamReaderUtils.readEnd(reader, namespace, "index", true); 151 found = true; 152 } else if (XmlStreamReaderUtils.readStart(reader, namespace, "sortKeyword", false)) { 153 logger.debug("-> sortKeywords"); 154 XmlStreamReaderUtils.readEnd(reader, namespace, "sortKeyword", true); 155 found = true; 118 156 } else { 119 157 break; 120 158 } 159 } // for 160 if (!found) { 161 // FIXME: error message 162 throw new XMLStreamException("expected at least one of <set>. <index> or <sortKeyword> element", reader.getLocation()); 121 163 } 122 164 XmlStreamReaderUtils.readEnd(reader, namespace, "indexInfo", true); 123 165 } // while 166 167 // explain/recordInfo or explain/schemaInfo 168 if (XmlStreamReaderUtils.peekStart(reader, namespace, "recordInfo") || 169 XmlStreamReaderUtils.peekStart(reader, namespace, "schemaInfo")) { 170 if (XmlStreamReaderUtils.readStart(reader, 171 namespace, "recordInfo", false)) { 172 logger.debug("recordInfo"); 173 XmlStreamReaderUtils.readEnd(reader, namespace, "recordInfo", true); 174 } else if (XmlStreamReaderUtils.readStart(reader, 175 namespace, "schemaInfo", false)) { 176 logger.debug("schemaInfo"); 177 XmlStreamReaderUtils.readEnd(reader, namespace, "schemaInfo", true); 178 } else { 179 throw new XMLStreamException("unexpected start element '" + 180 reader.getName() + "'", reader.getLocation()); 181 } 182 } 183 184 // explain/configInfo 185 if (XmlStreamReaderUtils.readStart(reader, namespace, 186 "configInfo", false)) { 187 /* 188 * configInfo ((default|setting|supports)*) 189 */ 190 logger.debug("configInfo"); 191 for (;;) { 192 if (XmlStreamReaderUtils.readStart(reader, 193 namespace, "default", false, true)) { 194 final String type = 195 XmlStreamReaderUtils.readAttributeValue(reader, 196 null, "type", true); 197 XmlStreamReaderUtils.consumeStart(reader); 198 final String value = 199 XmlStreamReaderUtils.readString(reader, true); 200 XmlStreamReaderUtils.readEnd(reader, namespace, "default"); 201 logger.debug("-> default: type={}, value={}", type, value); 202 } else if (XmlStreamReaderUtils.readStart(reader, 203 namespace, "setting", false, true)) { 204 final String type = 205 XmlStreamReaderUtils.readAttributeValue(reader, 206 null, "type", true); 207 XmlStreamReaderUtils.consumeStart(reader); 208 final String value = 209 XmlStreamReaderUtils.readString(reader, true); 210 XmlStreamReaderUtils.readEnd(reader, namespace, "setting"); 211 logger.debug("-> setting: type={}, value={}", type, value); 212 } else if (XmlStreamReaderUtils.readStart(reader, 213 namespace, "supports", false, true)) { 214 final String type = 215 XmlStreamReaderUtils.readAttributeValue(reader, 216 null, "type", true); 217 XmlStreamReaderUtils.consumeStart(reader); 218 final String value = 219 XmlStreamReaderUtils.readString(reader, true); 220 XmlStreamReaderUtils.readEnd(reader, namespace, "supports"); 221 222 logger.debug("-> supports: type={}, value={}", type, value); 223 } else { 224 break; 225 } 226 } 227 XmlStreamReaderUtils.readEnd(reader, namespace, "configInfo", true); 228 } 124 229 125 230 XmlStreamReaderUtils.readEnd(reader, namespace, "explain", true); … … 152 257 153 258 Set<String> transports = new HashSet<String>(); 154 s = XmlStreamReaderUtils.readAttributeValue(reader, 155 null, "transport"); 259 s = XmlStreamReaderUtils.readAttributeValue(reader, null, "transport"); 156 260 if (s != null) { 157 s = s + " http";158 261 for (String i : s.split("\\s+")) { 159 262 String t = null; … … 201 304 } 202 305 XmlStreamReaderUtils.readEnd(reader, namespace, "serverInfo", true); 203 logger.debug("serverInfo: host={}, port={}, database={}, version={}, protocol={}, transport={}", 204 host, port, database, version, protocol, transports); 306 logger.debug("serverInfo: host={}, port={}, database={}, version={}, " + 307 "protocol={}, transport={}", host, port, database, version, 308 protocol, transports); 205 309 return new ServerInfo(host, port, database, protocol, version, 206 310 transports); -
SRUClient/trunk/src/main/java/eu/clarin/sru/client/XmlStreamReaderUtils.java
r2936 r2953 107 107 } 108 108 if (reader.isStartElement()) { 109 if (!(namespaceURI.equals(reader.getNamespaceURI()) && localName110 .equals(reader.getLocalName()))) {109 if (!(namespaceURI.equals(reader.getNamespaceURI()) && 110 localName.equals(reader.getLocalName()))) { 111 111 level++; 112 112 } … … 228 228 public static String peekElementLocalName(XMLStreamReader reader) 229 229 throws XMLStreamException { 230 consumeWhitespace(reader); 230 231 if (!reader.isStartElement()) { 231 232 throw new XMLStreamException("not at a start elment event", … … 236 237 237 238 239 public static boolean peekStart(XMLStreamReader reader, 240 String namespaceURI, String localName) throws XMLStreamException { 241 consumeWhitespace(reader); 242 if (!reader.isStartElement()) { 243 throw new XMLStreamException("not at a start elment event", 244 reader.getLocation()); 245 } 246 return namespaceURI.equals(reader.getNamespaceURI()) && 247 localName.equals(reader.getLocalName()); 248 } 249 250 238 251 public static void consumeStart(XMLStreamReader reader) 239 252 throws XMLStreamException {
Note: See TracChangeset
for help on using the changeset viewer.