package org.insightech.er.editor.controller.command.tracking; import java.util.List; import org.insightech.er.editor.controller.command.AbstractCommand; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.model.diagram_contents.element.node.NodeElement; import org.insightech.er.editor.model.diagram_contents.element.node.NodeSet; import org.insightech.er.editor.model.tracking.ChangeTrackingList; import org.insightech.er.editor.model.tracking.RemovedNodeElement; import org.insightech.er.editor.model.tracking.UpdatedNodeElement; /** * 変更履歴計算コマンド */ public class CalculateChangeTrackingCommand extends AbstractCommand { private ERDiagram diagram; private NodeSet comparison; private ChangeTrackingList changeTrackingList; private List<NodeElement> oldAddedNodeElements; private List<UpdatedNodeElement> oldUpdatedNodeElements; private List<RemovedNodeElement> oldRemovedNodeElements; /** * 変更履歴計算コマンドを作成します。 * * @param diagram * @param comparison */ public CalculateChangeTrackingCommand(ERDiagram diagram, NodeSet comparison) { this.diagram = diagram; this.comparison = comparison; this.changeTrackingList = this.diagram.getChangeTrackingList(); this.oldAddedNodeElements = this.changeTrackingList .getAddedNodeElementSet(); this.oldUpdatedNodeElements = this.changeTrackingList .getUpdatedNodeElementSet(); this.oldRemovedNodeElements = this.changeTrackingList .getRemovedNodeElementSet(); } /** * 変更履歴計算処理を実行する */ @Override protected void doExecute() { this.changeTrackingList.calculateUpdatedNodeElementSet(this.comparison, this.diagram.getDiagramContents().getContents()); this.diagram.changeAll(); } /** * 変更履歴計算処理を元に戻す */ @Override protected void doUndo() { this.changeTrackingList.restore(this.oldAddedNodeElements, this.oldUpdatedNodeElements, this.oldRemovedNodeElements); this.diagram.changeAll(); } }