/** * Extracts {@code YElement} from {@code Document}. * * @param document, * {@code Document} used to {@code YElement} extraction. @return, * null if the {@code YElement} could not be extracted from given * {@code Document}. Or extracted {@code YElement}. */ public static YElement getYElement(Document document) { YExportable exportable = document.getMetadata(); if (!(exportable instanceof YElement)) { return null; } return (YElement) exportable; }
public void writeContent(Document document, InputStream inputStream, String contentFormat) { YElement metadata = (YElement) document.getMetadata(); String contentPartName = addOrReplaceYContent(metadata, contentFormat); document.setMetadata(metadata); try { document.addBinaryAttachment(contentPartName, new InputStreamResource(inputStream)); } catch (IOException e) { throw new GeneralBusinessException("Encountered a problem while adding attachment: {} to document: {}", contentPartName, document.getId()); } repository.storeDocument(document, null); }
@Override public Document process(Document item) throws Exception { String ancestor = item.getTagValue(RepositoryStoreConstants.TAG_NAME_ANCESTOR); if (StringUtils.isBlank(ancestor)) { return item; } NativeDocument parent = cachedDataStore.fetchDocument(ancestor, RecordProjection.TAGS_ONLY); if(parent == null){ return item; } String structureId = parent.getTagValue(RepositoryStoreConstants.TAG_NAME_STRUCTURE); if (StringUtils.isBlank(structureId)) { return item; } if(identifierHolder.getProcessId().equals(structureId)){ item.addTagByKey(RepositoryStoreConstants.TAG_NAME_STRUCTURE, structureId); } return item; } }
private void processDocument(Document document) { YExportable exportable = document.getMetadata(); if (!(exportable instanceof YElement)) { return; } YElement element = (YElement) exportable; try { if (transformer.modify(element)) { document.setMetadata(exportable); } } catch (Exception e) { problemHandler.handleProblem(LogSeverity.WARN, document.getId(), "enriching problem", e); } }
@Override public Document process(final Document document) { try { YExportable metadata = document.getMetadata(); if (metadata instanceof YElement) { YElement element = (YElement) metadata; structureBuilder.enrich(element); } else { problemHandler.handleProblem(LogSeverity.WARN, document.getId(), "YExportable", "metadata not YElement"); } } catch (BwmetaValidationException e) { problemHandler.handleProblem(LogSeverity.WARN, document.getId(), e.getValidationType(), e); } return document; } }
private boolean changeElementLevel(DocumentRepository repository, String identity) { NativeDocument fetchDocument = repository.fetchDocument(identity); Document document = (Document) fetchDocument; YElement element = (YElement) document.getMetadata(); String fixedCurrentLevel = HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_ISSUE; String newTagValue = HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL + "=" + fixedCurrentLevel; document.addTagByKey("hierarchyLevel", newTagValue); YStructure structure = element.getStructure(HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL); YCurrent current = structure.getCurrent(); if (!HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_VOLUME.equals(current.getLevel())) { System.out.println("current level is = "+current.getLevel()+" expected year. Won't fix"); return false; } else { current.setLevel(fixedCurrentLevel); document.setMetadata(element); repository.storeDocument(document, EventConstants.EVENT_TAG_NO_EVENT); return true; } }
YExportable exportable = document.getMetadata(); if (!(exportable instanceof YElement)) { return null; logger.debug("Saving publication {} information in people index", document.getId()); ResourceVisibility visibility = ResourceVisibility.fromString(document.getTagValue(RepositoryStoreConstants.TAG_NAME_OBJECT_VISIBILITY)); ContentIndexDocumentWithIdentities contentDocument = new ContentIndexDocumentWithIdentities(document.getId(), ContentType.PUBLICATION); if (ResourceVisibility.PUBLIC != visibility) { contentDocument.setStatus(Status.HIDDEN);
private PersistableAuthorship requestRemoveAuthorshipInternal(PersistableAuthorship authorship, String removeAuthorshipNote, boolean immediate) { authorshipUtil.changeStatus(authorship, AuthorshipStatus.REMOVE_REQUEST, removeAuthorshipNote); if (immediate) { Document document = (Document) repository.fetchDocument(authorship.getDocumentId()); YElement element = (YElement) document.getMetadata(); ValidationInfo info = validator.validate(document, authorshipMapping.apply(authorship)); if (!info.isValid()) { LOGGER.warn("Processing immediate remove authorship request: " + authorship + " failed with note: " + info.getNote()); } else if (!info.isAlreadyAssigned()) { LOGGER.warn("Trying to remove not existing association: " + authorship); } else { SetMultimap<String, String> personIdentities = HashMultimap.create(); YContributor contributor = BwmetaContributorUtils.getContributorById(authorship.getAuthorNoInDocument(), element); personIdentities.put(authorship.getUserId(), BwmetaContributorUtils.buildContributorId(authorship.getDocumentId(), contributor)); BwmetaContributorUtils.setContributorIdentity(contributor, null); document.setMetadata(element); authorship.setForced(true); repository.storeDocument(document, EventConstants.EVENT_TAG_NO_EVENT); } } authorship = authorshipRepository.saveAndFlush(authorship); if(authorship.getStatus() == AuthorshipStatus.REMOVE_REQUEST){ markForProcessing(authorship.getId()); } return authorship; }
private void saveDocumentWithElement(DocumentRepository repository, Document document, YElement element) { document.setMetadata(element); repository.storeDocument(document, EventConstants.EVENT_TAG_NO_EVENT); }
Document document = documentFactory.getDocument(nativeDocument, yElement); document.addTagByKey(TAG_NAME_IMPORT, identifierHolder.getProcessId()); document.addTagByKey(TAG_NAME_CREATION_TIMESTAMP, String.valueOf(System.currentTimeMillis())); document.addBinaryAttachment(transliterationPartId, FileUtils.readFileToByteArray(input.getSpeechToTextFile())); YContentFile viedoSpeechToTextContent = new YContentFile(id + "_text_" + transliterationPartId, FileTypes.FT_FULL_TEXT, "plain/text", Collections.singletonList(transliterationPartId));
@Override protected String getKey(Document result) { return result.getId(); }
private void fixYearInYear(DocumentRepository repository, Document document, YElement element) { String fixedCurrentLevel = HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_VOLUME; String newTagValue = HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL + "=" + fixedCurrentLevel; document.addTagByKey("hierarchyLevel", newTagValue); YStructure structure = element.getStructure(HierarchyWithLevelIds.EXT_HIERARCHY_JOURNAL); YCurrent current = structure.getCurrent(); if (!HierarchyWithLevelIds.EXT_LEVEL_JOURNAL_YEAR.equals(current.getLevel())) { System.out.println("current level is = "+current.getLevel()+" expected year. Won't fix"); } else { current.setLevel(fixedCurrentLevel); saveDocumentWithElement(repository, document, element); } }
private void addCover(Document doc, YElement element, String coverUrl) throws IOException { String mimeType = prepareCoverMimeType(coverUrl); String coverId = computeCoverId(coverUrl); if (properties.contains(Property.HARVEST_COVER)) { prepareCover(element, coverUrl, mimeType, coverId); byte[] data = fetchFileContent(coverUrl); Attachment<?> atachment = doc.addBinaryAttachment(coverId, data); atachment.addTagByKey(RepositoryStoreConstants.TAG_NAME_CONTENT_TYPE, FileTypes.FT_COVER); atachment.addTagByKey(RepositoryStoreConstants.TAG_NAME_TYPE, "source"); atachment.addTagByKey(RepositoryStoreConstants.TAG_NAME_MIME, mimeType); } else { prepareCover(element, coverUrl, mimeType, coverId); } }
String dataset = document.getTagValue("dataset"); if (dataset == null || !dataset.equalsIgnoreCase(provider)) { return false;
private static void writeDataToZipFile(Iterator<Record> itr, String zipFile) { logger.info("starting zipFile {}", zipFile); try { FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); int count = 0; while (itr.hasNext() && count < FILES_PER_ZIP) { Document document = transformer.apply(itr.next()); logger.debug("zipFile {} document {}", zipFile, document.getId()); ZipEntry ze = new ZipEntry(bwmetaStorePath(document)); zos.putNextEntry(ze); String data = writerSupport.write(document.getMetadata()); zos.write(data.getBytes()); count++; } zos.closeEntry(); zos.close(); } catch (IOException ex) { logger.error("error", ex); } }
private void addCoverAndOrMetadata(Document document, HarvestingResult harvestingResult) { YElement element = YElementUtils.getYElement(document); if (prepareDocumentCoverAndOrMetadata(document, harvestingResult, element)) { document.setMetadata(element); } }
private static String bwmetaStorePath(Document document) { return "metadata" + File.separator + "bwmeta-2.1.0" + File.separator + document.getId() + ".xml"; }
private YElement fetchElement(DocumentRepository repository, String identity) { NativeDocument fetchDocument = repository.fetchDocument(identity); Document document = (Document) fetchDocument; YElement element = (YElement) document.getMetadata(); return element; }
@Override public void replaceMetadata(String id, String xml) { Document document = (Document) documentRepository.fetchDocument(id); YExportable element; element = YModelToolbox.retrieveFirstYElement(bwmetaDeserializer.parse(xml, null)); document.setMetadata(element); documentRepository.storeDocument(document, null); }
@Override public Document process(Document item) throws Exception { if (item != null) { processedElements.add(item.getId()); } return item; } }