blob: cadeab88f5e09afe2b46573b0195bed82b1cd556 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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();
}
}