@Override public ReturnWithExceptions<Void, ModelObserver> aipDeleted(String aipId, boolean deleteIncidences) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); deleteDocumentFromIndex(IndexedAIP.class, aipId).addTo(ret); deleteDocumentsFromIndex(IndexedRepresentation.class, RodaConstants.REPRESENTATION_AIP_ID, aipId).addTo(ret); deleteDocumentsFromIndex(IndexedFile.class, RodaConstants.FILE_AIP_ID, aipId).addTo(ret); deleteDocumentsFromIndex(IndexedPreservationEvent.class, RodaConstants.PRESERVATION_EVENT_AIP_ID, aipId).addTo(ret); if (deleteIncidences) { deleteDocumentsFromIndex(RiskIncidence.class, RodaConstants.RISK_INCIDENCE_AIP_ID, aipId).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> jobCreatedOrUpdated(Job job, boolean reindexJobReports) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); SolrUtils.create2(index, (ModelObserver) this, Job.class, job).addTo(ret); if (ret.isEmpty() && reindexJobReports) { indexJobReports(job).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> fileDeleted(String aipId, String representationId, List<String> fileDirectoryPath, String fileId, boolean deleteIncidences) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); String uuid = IdUtils.getFileId(aipId, representationId, fileDirectoryPath, fileId); deleteDocumentFromIndex(IndexedFile.class, uuid).addTo(ret); if (deleteIncidences) { deleteDocumentsFromIndex(RiskIncidence.class, RodaConstants.RISK_INCIDENCE_FILE_ID, fileId).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> aipPermissionsUpdated(AIP aip) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); // change AIP SolrUtils.update(index, IndexedAIP.class, aip.getId(), SolrUtils.getPermissionsAsPreCalculatedFields(aip.getPermissions()), (ModelObserver) this).addTo(ret); if (ret.isEmpty()) { // change Representations, Files and Preservation events representationsPermissionsUpdated(aip).addTo(ret); preservationEventsPermissionsUpdated(aip).addTo(ret); } return ret; }
private ReturnWithExceptions<Void, ModelObserver> indexRepresentations(final AIP aip, final List<String> ancestors) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); for (Representation representation : aip.getRepresentations()) { indexRepresentation(aip, representation, ancestors).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> userUpdated(User user) { ReturnWithExceptions<Void, ModelObserver> ret = userDeleted(user.getId()); userCreated(user).addTo(ret); return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> aipUpdated(AIP aip) { // TODO Is this the best way to update? ReturnWithExceptions<Void, ModelObserver> ret = aipDeleted(aip.getId(), false); aipCreated(aip).addTo(ret); return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> dipUpdated(DIP dip, boolean commit) { ReturnWithExceptions<Void, ModelObserver> ret = dipDeleted(dip.getId(), commit); dipCreated(dip, commit).addTo(ret); return ret; }
private ReturnWithExceptions<Void, ModelObserver> representationsStateUpdated(final AIP aip) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); for (Representation representation : aip.getRepresentations()) { representationStateUpdated(aip, representation).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> groupUpdated(Group group) { ReturnWithExceptions<Void, ModelObserver> ret = groupDeleted(group.getId()); groupCreated(group).addTo(ret); return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> preservationMetadataCreated(PreservationMetadata pm) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); PreservationMetadataType type = pm.getType(); if (PreservationMetadataType.EVENT.equals(type)) { indexPreservationEvent(pm).addTo(ret); } else if (PreservationMetadataType.AGENT.equals(type)) { SolrUtils.create2(index, (ModelObserver) this, IndexedPreservationAgent.class, pm).addTo(ret); } return ret; }
private ReturnWithExceptions<Void, ModelObserver> representationsPermissionsUpdated(final AIP aip) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); for (Representation representation : aip.getRepresentations()) { representationPermissionsUpdated(aip, representation).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> dipDeleted(String dipId, boolean commit) { ReturnWithExceptions<Void, ModelObserver> ret = deleteDocumentFromIndex(IndexedDIP.class, commit, dipId); if (ret.isEmpty()) { deleteDocumentsFromIndex(DIPFile.class, RodaConstants.DIPFILE_DIP_ID, dipId, commit).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> preservationMetadataDeleted( PreservationMetadata preservationMetadata) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); PreservationMetadataType type = preservationMetadata.getType(); String preservationMetadataId = preservationMetadata.getId(); if (PreservationMetadataType.EVENT.equals(type)) { deleteDocumentFromIndex(IndexedPreservationEvent.class, preservationMetadataId).addTo(ret); } else if (PreservationMetadataType.AGENT.equals(type)) { deleteDocumentFromIndex(IndexedPreservationAgent.class, preservationMetadataId).addTo(ret); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> dipFileCreated(DIPFile file) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); try { DIP dip = model.retrieveDIP(file.getDipId()); indexDIPFile(dip, file, true).addTo(ret); } catch (NotFoundException | GenericException | AuthorizationDeniedException e) { LOGGER.error("Error indexing DIP file: {}", file, e); ret.add(e); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> representationUpdated(Representation representation) { ReturnWithExceptions<Void, ModelObserver> ret = representationDeleted(representation.getAipId(), representation.getId(), false); representationCreated(representation).addTo(ret); return ret; }
private ReturnWithExceptions<Void, ModelObserver> indexPreservationEvent(PreservationMetadata pm) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); AIP aip = null; try { aip = model.retrieveAIP(pm.getAipId()); } catch (RequestNotValidException | NotFoundException | GenericException | AuthorizationDeniedException e) { LOGGER.error("Error indexing preservation events", e); ret.add(e); } SolrUtils.create2(index, (ModelObserver) this, IndexedPreservationEvent.class, pm, new PreservationEventCollection.Info(aip)).addTo(ret); return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> fileCreated(File file) { ReturnWithExceptions<Void, ModelObserver> ret = new ReturnWithExceptions<>(this); try { AIP aip = model.retrieveAIP(file.getAipId()); List<String> ancestors = SolrUtils.getAncestors(aip.getParentId(), model); indexFile(aip, file, ancestors, true).addTo(ret); } catch (RequestNotValidException | NotFoundException | GenericException | AuthorizationDeniedException e) { LOGGER.error("Error indexing file: {}", file, e); ret.add(e); } return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> dipFileUpdated(DIPFile file) { ReturnWithExceptions<Void, ModelObserver> ret = dipFileDeleted(file.getDipId(), file.getPath(), file.getId()); dipFileCreated(file).addTo(ret); return ret; }
@Override public ReturnWithExceptions<Void, ModelObserver> fileUpdated(File file) { ReturnWithExceptions<Void, ModelObserver> ret = fileDeleted(file.getAipId(), file.getRepresentationId(), file.getPath(), file.getId(), false); fileCreated(file).addTo(ret); return ret; }