/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE file at the root of the source
* tree and available online at
*
* https://github.com/keeps/roda
*/
package org.roda.core.model;
import java.util.ArrayList;
import java.util.List;
import org.roda.core.data.v2.formats.Format;
import org.roda.core.data.v2.ip.AIP;
import org.roda.core.data.v2.ip.DIP;
import org.roda.core.data.v2.ip.DIPFile;
import org.roda.core.data.v2.ip.File;
import org.roda.core.data.v2.ip.Representation;
import org.roda.core.data.v2.ip.metadata.DescriptiveMetadata;
import org.roda.core.data.v2.ip.metadata.OtherMetadata;
import org.roda.core.data.v2.ip.metadata.PreservationMetadata;
import org.roda.core.data.v2.jobs.Job;
import org.roda.core.data.v2.jobs.Report;
import org.roda.core.data.v2.log.LogEntry;
import org.roda.core.data.v2.notifications.Notification;
import org.roda.core.data.v2.risks.Risk;
import org.roda.core.data.v2.risks.RiskIncidence;
import org.roda.core.data.v2.user.Group;
import org.roda.core.data.v2.user.User;
public abstract class ModelObservable {
private final List<ModelObserver> observers;
public ModelObservable() {
super();
this.observers = new ArrayList<>();
}
public void addModelObserver(ModelObserver observer) {
observers.add(observer);
}
public void removeModelObserver(ModelObserver observer) {
observers.remove(observer);
}
public void notifyAipCreated(AIP aip) {
for (ModelObserver observer : observers) {
observer.aipCreated(aip);
}
}
public void notifyAipUpdated(AIP aip) {
for (ModelObserver observer : observers) {
observer.aipUpdated(aip);
}
}
public void notifyAipMoved(AIP aip, String oldParentId, String newParentId) {
for (ModelObserver observer : observers) {
observer.aipMoved(aip, oldParentId, newParentId);
}
}
public void notifyAipStateUpdated(AIP aip) {
for (ModelObserver observer : observers) {
observer.aipStateUpdated(aip);
}
}
public void notifyAipDeleted(String aipId) {
for (ModelObserver observer : observers) {
observer.aipDeleted(aipId, true);
}
}
public void notifyDescriptiveMetadataCreated(DescriptiveMetadata descriptiveMetadata) {
for (ModelObserver observer : observers) {
observer.descriptiveMetadataCreated(descriptiveMetadata);
}
}
public void notifyDescriptiveMetadataUpdated(DescriptiveMetadata descriptiveMetadata) {
for (ModelObserver observer : observers) {
observer.descriptiveMetadataUpdated(descriptiveMetadata);
}
}
public void notifyDescriptiveMetadataDeleted(String aipId, String representationId,
String descriptiveMetadataBinaryId) {
for (ModelObserver observer : observers) {
observer.descriptiveMetadataDeleted(aipId, representationId, descriptiveMetadataBinaryId);
}
}
public void notifyRepresentationCreated(Representation representation) {
for (ModelObserver observer : observers) {
observer.representationCreated(representation);
}
}
public void notifyRepresentationUpdated(Representation representation) {
for (ModelObserver observer : observers) {
observer.representationUpdated(representation);
}
}
public void notifyRepresentationDeleted(String aipId, String representationId) {
for (ModelObserver observer : observers) {
observer.representationDeleted(aipId, representationId, true);
}
}
public void notifyFileCreated(File file) {
for (ModelObserver observer : observers) {
observer.fileCreated(file);
}
}
public void notifyFileUpdated(File file) {
for (ModelObserver observer : observers) {
observer.fileUpdated(file);
}
}
public void notifyFileDeleted(String aipId, String representationId, List<String> fileDirectoryPath, String fileId) {
for (ModelObserver observer : observers) {
observer.fileDeleted(aipId, representationId, fileDirectoryPath, fileId, true);
}
}
public void notifyLogEntryCreated(LogEntry entry) {
for (ModelObserver observer : observers) {
observer.logEntryCreated(entry);
}
}
public void notifyUserCreated(User user) {
for (ModelObserver observer : observers) {
observer.userCreated(user);
}
}
public void notifyUserUpdated(User user) {
for (ModelObserver observer : observers) {
observer.userUpdated(user);
}
}
public void notifyUserDeleted(String userID) {
for (ModelObserver observer : observers) {
observer.userDeleted(userID);
}
}
public void notifyGroupCreated(Group group) {
for (ModelObserver observer : observers) {
observer.groupCreated(group);
}
}
public void notifyGroupUpdated(Group group) {
for (ModelObserver observer : observers) {
observer.groupUpdated(group);
}
}
public void notifyGroupDeleted(String groupID) {
for (ModelObserver observer : observers) {
observer.groupDeleted(groupID);
}
}
public void notifyPreservationMetadataCreated(PreservationMetadata preservationMetadataBinary) {
for (ModelObserver observer : observers) {
observer.preservationMetadataCreated(preservationMetadataBinary);
}
}
public void notifyPreservationMetadataUpdated(PreservationMetadata preservationMetadataBinary) {
for (ModelObserver observer : observers) {
observer.preservationMetadataUpdated(preservationMetadataBinary);
}
}
public void notifyPreservationMetadataDeleted(PreservationMetadata pm) {
for (ModelObserver observer : observers) {
observer.preservationMetadataDeleted(pm);
}
}
public void notifyOtherMetadataCreated(OtherMetadata otherMetadataBinary) {
for (ModelObserver observer : observers) {
observer.otherMetadataCreated(otherMetadataBinary);
}
}
public void notifyJobCreatedOrUpdated(Job job, boolean reindexJobReports) {
for (ModelObserver observer : observers) {
observer.jobCreatedOrUpdated(job, reindexJobReports);
}
}
public void notifyJobDeleted(String jobId) {
for (ModelObserver observer : observers) {
observer.jobDeleted(jobId);
}
}
public void notifyJobReportCreatedOrUpdated(Report jobReport, Job job) {
for (ModelObserver observer : observers) {
observer.jobReportCreatedOrUpdated(jobReport, job);
}
}
public void notifyJobReportDeleted(String jobReportId) {
for (ModelObserver observer : observers) {
observer.jobReportDeleted(jobReportId);
}
}
public void notifyAipPermissionsUpdated(AIP aip) {
for (ModelObserver observer : observers) {
observer.aipPermissionsUpdated(aip);
}
}
public void notifyDipPermissionsUpdated(DIP dip) {
for (ModelObserver observer : observers) {
observer.dipPermissionsUpdated(dip);
}
}
public void notifyTransferredResourceDeleted(String transferredResourceID) {
for (ModelObserver observer : observers) {
observer.transferredResourceDeleted(transferredResourceID);
}
}
public void notifyRiskCreatedOrUpdated(Risk risk, int incidences, boolean commit) {
for (ModelObserver observer : observers) {
observer.riskCreatedOrUpdated(risk, incidences, commit);
}
}
public void notifyRiskDeleted(String riskId, boolean commit) {
for (ModelObserver observer : observers) {
observer.riskDeleted(riskId, commit);
}
}
public void notifyRiskIncidenceCreatedOrUpdated(RiskIncidence riskIncidence, boolean commit) {
for (ModelObserver observer : observers) {
observer.riskIncidenceCreatedOrUpdated(riskIncidence, commit);
}
}
public void notifyRiskIncidenceDeleted(String riskIncidenceId, boolean commit) {
for (ModelObserver observer : observers) {
observer.riskIncidenceDeleted(riskIncidenceId, commit);
}
}
public void notifyFormatCreatedOrUpdated(Format format, boolean commit) {
for (ModelObserver observer : observers) {
observer.formatCreatedOrUpdated(format, commit);
}
}
public void notifyFormatDeleted(String formatId, boolean commit) {
for (ModelObserver observer : observers) {
observer.formatDeleted(formatId, commit);
}
}
public void notifyNotificationCreatedOrUpdated(Notification notification) {
for (ModelObserver observer : observers) {
observer.notificationCreatedOrUpdated(notification);
}
}
public void notifyNotificationDeleted(String notificationId) {
for (ModelObserver observer : observers) {
observer.notificationDeleted(notificationId);
}
}
public void notifyDIPCreated(DIP dip, boolean commit) {
for (ModelObserver observer : observers) {
observer.dipCreated(dip, commit);
}
}
public void notifyDIPUpdated(DIP dip, boolean commit) {
for (ModelObserver observer : observers) {
observer.dipUpdated(dip, commit);
}
}
public void notifyDIPDeleted(String dipId, boolean commit) {
for (ModelObserver observer : observers) {
observer.dipDeleted(dipId, commit);
}
}
public void notifyDIPFileCreated(DIPFile file) {
for (ModelObserver observer : observers) {
observer.dipFileCreated(file);
}
}
public void notifyDIPFileUpdated(DIPFile file) {
for (ModelObserver observer : observers) {
observer.dipFileUpdated(file);
}
}
public void notifyDIPFileDeleted(String dipId, List<String> path, String fileId) {
for (ModelObserver observer : observers) {
observer.dipFileDeleted(dipId, path, fileId);
}
}
}