/* Copyright 2011-2016 Google Inc. All Rights Reserved. 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 com.google.security.zynamics.binnavi.Database.PostgreSQL.Notifications.containers; import com.google.common.base.Preconditions; import com.google.security.zynamics.binnavi.Database.Exceptions.CouldntLoadDataException; import com.google.security.zynamics.binnavi.Database.PostgreSQL.Notifications.interfaces.CommentNotification; import com.google.security.zynamics.binnavi.Gui.GraphWindows.CommentDialogs.Interfaces.IComment; import com.google.security.zynamics.binnavi.disassembly.CommentManager; import com.google.security.zynamics.binnavi.disassembly.CommentManager.CommentOperation; /** * This class implements the common methods for {@link CommentNotification comment notifications}. */ public abstract class AbstractCommentNotification implements CommentNotification { private final CommentOperation operation; private final Integer commentId; public AbstractCommentNotification(final CommentOperation operation, final Integer commentId) { this.operation = Preconditions.checkNotNull(operation, "Error: Operation argument can not be null."); this.commentId = commentId; } @Override public CommentOperation getOperation() { return operation; } @Override public Integer getCommentId() { return commentId; } abstract void informDelete(CommentManager manager, IComment comment); abstract void informAppend(CommentManager manager) throws CouldntLoadDataException; @Override public void inform(CommentManager manager) throws CouldntLoadDataException { final IComment comment = manager.getCommentById(getCommentId()); if (operation == CommentOperation.DELETE && comment != null) { informDelete(manager, comment); } else if (operation == CommentOperation.APPEND) { informAppend(manager); } } }