Changeset 6310
- Timestamp:
- 06/19/15 13:03:55 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/CMDIParserVTDXML.java
r6214 r6310 211 211 cmdiData.addResource(ref, type, mimeType); 212 212 } 213 213 214 214 // resource hierarchy information? 215 if (type.toLowerCase().equals("metadata")) {215 if (type.toLowerCase().equals("metadata")) { 216 216 ResourceStructureGraph.addEdge(ref, mdSelfLinkString); 217 217 } … … 265 265 */ 266 266 private boolean matchPattern(CMDIData cmdiData, VTDNav nav, FacetConfiguration config, String pattern, Boolean allowMultipleValues) throws VTDException { 267 boolean matchedPattern = false; 268 AutoPilot ap = new AutoPilot(nav); 267 final AutoPilot ap = new AutoPilot(nav); 269 268 setNameSpace(ap); 270 269 ap.selectXPath(pattern); 270 271 boolean matchedPattern = false; 271 272 int index = ap.evalXPath(); 272 273 while (index != -1) { … … 276 277 index++; 277 278 } 278 String value = nav.toString(index); 279 280 // extract language code in xml:lang if available 281 Integer langAttrIndex = nav.getAttrVal("xml:lang"); 282 String languageCode = DEFAULT_LANGUAGE; 283 if (langAttrIndex != -1) { 284 languageCode = nav.toString(langAttrIndex).trim(); 285 } 286 // replace 2-letter with 3-letter codes 287 if (MetadataImporter.languageCodeUtils.getSilToIso639Map().containsKey(languageCode)) { 288 languageCode = MetadataImporter.languageCodeUtils.getSilToIso639Map().get(languageCode); 289 } 279 final String value = nav.toString(index); 280 281 final String languageCode = extractLanguageCode(nav); 290 282 291 283 // ignore non-English language names for facet LANGUAGE_CODE … … 295 287 } 296 288 297 List<String> valueList = postProcess(config.getName(), value); 298 for (int i = 0; i < valueList.size(); i++) { 299 if (!allowMultipleValues && i > 0) { 300 break; 301 } 302 String fieldValue = valueList.get(i).trim(); 303 if (config.getName().equals(FacetConstants.FIELD_DESCRIPTION)) { 304 fieldValue = "{lang='" + languageCode + "'}" + fieldValue; 305 } 306 cmdiData.addDocField(config.getName(), fieldValue, config.isCaseInsensitive()); 307 } 289 final List<String> valueList = postProcess(config.getName(), value); 290 insertFacetValues(config.getName(), valueList, cmdiData, languageCode, allowMultipleValues, config.isCaseInsensitive()); 308 291 index = ap.evalXPath(); 309 292 … … 313 296 } 314 297 return matchedPattern; 298 } 299 300 private String extractLanguageCode(VTDNav nav) throws NavException { 301 // extract language code in xml:lang if available 302 Integer langAttrIndex = nav.getAttrVal("xml:lang"); 303 String languageCode = DEFAULT_LANGUAGE; 304 if (langAttrIndex != -1) { 305 languageCode = nav.toString(langAttrIndex).trim(); 306 } 307 // replace 2-letter with 3-letter codes 308 if (MetadataImporter.languageCodeUtils.getSilToIso639Map().containsKey(languageCode)) { 309 languageCode = MetadataImporter.languageCodeUtils.getSilToIso639Map().get(languageCode); 310 } 311 return languageCode; 312 } 313 314 private void insertFacetValues(String name, List<String> valueList, CMDIData cmdiData, String languageCode, boolean allowMultipleValues, boolean caseInsensitive) { 315 for (int i = 0; i < valueList.size(); i++) { 316 if (!allowMultipleValues && i > 0) { 317 break; 318 } 319 String fieldValue = valueList.get(i).trim(); 320 if (name.equals(FacetConstants.FIELD_DESCRIPTION)) { 321 fieldValue = "{lang='" + languageCode + "'}" + fieldValue; 322 } 323 cmdiData.addDocField(name, fieldValue, caseInsensitive); 324 } 315 325 } 316 326
Note: See TracChangeset
for help on using the changeset viewer.