| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation and others. |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // Contributors: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.library.edit.process.command; |
| |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| import org.eclipse.emf.common.command.CompoundCommand; |
| import org.eclipse.epf.library.edit.command.BatchCommand; |
| import org.eclipse.epf.uma.Descriptor; |
| import org.eclipse.epf.uma.MethodConfiguration; |
| |
| |
| /** |
| * @author Phong Nguyen Le - Feb 9, 2006 |
| * @since 1.0 |
| */ |
| public class DescriptorUpdateBatchCommand extends BatchCommand { |
| private Set descriptorsToRefresh; |
| private CompoundCommand refreshDescriptorsCommand; |
| private Set synchFeatures; |
| private MethodConfiguration config; |
| |
| /** |
| * @param clear |
| */ |
| public DescriptorUpdateBatchCommand(boolean clear, Set synchFeatures, MethodConfiguration config) { |
| super(clear); |
| this.synchFeatures = synchFeatures; |
| this.config = config; |
| } |
| |
| public Set getDescriptorsToRefresh() { |
| if(descriptorsToRefresh == null) { |
| descriptorsToRefresh = new HashSet(); |
| } |
| return descriptorsToRefresh; |
| } |
| |
| void setDescriptorsToRefresh(Set descriptorsToRefresh) { |
| this.descriptorsToRefresh = descriptorsToRefresh; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.epf.library.edit.command.BatchCommand#dispose() |
| */ |
| public void dispose() { |
| if(descriptorsToRefresh != null) { |
| descriptorsToRefresh.clear(); |
| descriptorsToRefresh = null; |
| } |
| |
| if(refreshDescriptorsCommand != null) { |
| refreshDescriptorsCommand.dispose(); |
| } |
| |
| super.dispose(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.epf.library.edit.command.BatchCommand#canExecute() |
| */ |
| public boolean canExecute() { |
| return super.canExecute() || (descriptorsToRefresh != null && !descriptorsToRefresh.isEmpty()); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.epf.library.edit.command.BatchCommand#execute() |
| */ |
| public void execute() { |
| super.execute(); |
| |
| // create refreshDescriptorsCommand |
| // |
| if(descriptorsToRefresh != null && !descriptorsToRefresh.isEmpty() |
| && refreshDescriptorsCommand == null) { |
| refreshDescriptorsCommand = new CompoundCommand(); |
| for (Iterator iter = descriptorsToRefresh.iterator(); iter.hasNext();) { |
| Descriptor desc = (Descriptor) iter.next(); |
| refreshDescriptorsCommand.append(new BasicSynchronizeDescriptorCommand(desc, synchFeatures, config)); |
| refreshDescriptorsCommand.append(new RemoveDuplicateReferenceCommand(desc, ProcessCommandUtil.CONTENT_ELEMENT_GUIDANCE_REFERENCES, config)); |
| } |
| } |
| |
| // refresh descriptors |
| // |
| if(refreshDescriptorsCommand != null) { |
| refreshDescriptorsCommand.execute(); |
| } |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.epf.library.edit.command.BatchCommand#undo() |
| */ |
| public void undo() { |
| if(refreshDescriptorsCommand != null) { |
| refreshDescriptorsCommand.undo(); |
| } |
| |
| super.undo(); |
| } |
| } |