diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteDataSourceAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteDataSourceAction.java index 21690120c3..3ac6f0eec8 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteDataSourceAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteDataSourceAction.java @@ -58,6 +58,7 @@ public final class DeleteDataSourceAction extends AbstractAction { Case.getCurrentCaseThrows().getSleuthkitCase().deleteDataSource(dataSourceID); KeywordSearchService kwsService = Lookup.getDefault().lookup(KeywordSearchService.class); kwsService.deleteDataSource(dataSourceID); + Case.getCurrentCaseThrows().notifyDataSourceDeleted(dataSourceID); } catch (NoCurrentCaseException | TskCoreException | KeywordSearchServiceException e) { logger.log(Level.WARNING, String.format("Error Deleting data source (obj_id=%d)", dataSourceID), e); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 0a4586dd42..300b563d02 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -77,6 +77,7 @@ import org.sleuthkit.autopsy.casemodule.events.CommentChangedEvent; import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent; import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.DataSourceDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceNameChangedEvent; import org.sleuthkit.autopsy.casemodule.events.ReportAddedEvent; import org.sleuthkit.autopsy.casemodule.multiusercases.CaseNodeData.CaseNodeDataException; @@ -1482,6 +1483,18 @@ public class Case { eventPublisher.publish(new DataSourceNameChangedEvent(dataSource, newName)); } + /** + * Notifies case event subscribers that a data source has been delete from + * the case database. + * + * This should not be called from the event dispatch thread (EDT) + * + * @param dataSourceId The data source that was deleted. + */ + public void notifyDataSourceDeleted(Long dataSourceId) { + eventPublisher.publish(new DataSourceDeletedEvent(dataSourceId)); + } + /** * Notifies case event subscribers that a content tag has been added. * diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/DataSourceDeletedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/DataSourceDeletedEvent.java new file mode 100644 index 0000000000..5317a951d0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/DataSourceDeletedEvent.java @@ -0,0 +1,51 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2015-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.sleuthkit.autopsy.casemodule.events; + +import java.io.Serializable; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.events.AutopsyEvent; + +public class DataSourceDeletedEvent extends AutopsyEvent implements Serializable { + + private static final long serialVersionUID = 1L; + private final long dataSourceId; + + /** + * Constructs an event published when a data source is added to a case. + * + * @param dataSourceId The data source that was deleted. + */ + public DataSourceDeletedEvent(Long dataSourceId) { + + super(Case.Events.DATA_SOURCE_DELETED.toString(), null, dataSourceId); + this.dataSourceId = dataSourceId; + } + + /** + * Gets the data source id that is being deleted + * + * @return The data source id. + */ + public long getDataSourceId() { + return dataSourceId; + } + +}