private static void addFormatSet(SolrInputDocument doc, Collection<DcsFormat> set) { if (set == null || set.size() == 0) { return; } for (DcsFormat fmt : set) { setadd(doc, FormatField.NAME, fmt.getName()); setadd(doc, FormatField.FORMAT, fmt.getFormat()); setadd(doc, FormatField.SCHEMA, fmt.getSchemeUri()); setadd(doc, FormatField.VERSION, fmt.getVersion()); } }
private static Set<DcsFormat> getFormatSet(SolrDocument doc) { Set<DcsFormat> set = new HashSet<DcsFormat>(); String[] names = setgetAll(doc, FormatField.NAME); String[] schemas = setgetAll(doc, FormatField.SCHEMA); String[] versions = setgetAll(doc, FormatField.VERSION); String[] formats = setgetAll(doc, FormatField.FORMAT); for (int i = 0; i < formats.length; i++) { DcsFormat fmt = new DcsFormat(); if (formats[i] != null) fmt.setFormat(formats[i]); if (names[i] != null) fmt.setName(names[i]); if (schemas[i] != null) fmt.setSchemeUri(schemas[i]); if (versions[i] != null) fmt.setVersion(versions[i]); set.add(fmt); } return set; }
public static SolrInputDocument indexMetadataFile( SolrInputDocument doc, Collection<DcsMetadataRef> set, List<SolrInputDocument> docs) { int foundFgdc = 0; // Assuming the DCS file is available in the Sip for (DcsMetadataRef ref : set) { DcsFile file = null; for (SolrInputDocument document : docs) { String refStr = ref.getRef(); String id = (String) document.getFieldValue(EntityField.ID.solrName()); if (refStr.equals(id)) try { file = (DcsFile) fromSolr(toSolrDocument(document)); } catch (IOException e) { e .printStackTrace(); // To change body of catch statement use File | Settings | File // Templates. } } if (file == null) continue; // get the file from SIP or from index // DcsFile file = new DcsFile(); for (DcsFormat format : file.getFormats()) { if (format.getFormat().contains("fgdc")) { MetadataDocument fgdcDoc = null; try { String fileSource = file.getSource().replace("file://", ""); fgdcDoc = MetadataDocument.Factory.parse(new File(fileSource)); ThemeType[] keywords = fgdcDoc.getMetadata().getIdinfo().getKeywords().getThemeArray(); PlaceType[] places = fgdcDoc.getMetadata().getIdinfo().getKeywords().getPlaceArray(); Set<String> themes = new HashSet<String>(); for (ThemeType theme : keywords) { for (String themeStr : theme.getThemekeyArray()) themes.add(themeStr); } addStrings(doc, themes, CoreMetadataField.SUBJECT); Set<String> placeKeys = new HashSet<String>(); for (PlaceType place : places) { for (String placeStr : place.getPlacekeyArray()) placeKeys.add(placeStr); } addStrings(doc, placeKeys, SeadSolrField.DeliverableUnitField.LOCATION); } catch (XmlException e) { e .printStackTrace(); // To change body of catch statement use File | Settings | File // Templates. } catch (IOException e) { e .printStackTrace(); // To change body of catch statement use File | Settings | File // Templates. } foundFgdc = 1; } if (foundFgdc == 1) break; } if (foundFgdc == 1) break; } return doc; }