/*******************************************************************************
* Copyright (c) 2006, 2008 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 API and implementation
*******************************************************************************/
package org.eclipse.ltk.internal.core.refactoring.history;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.ltk.core.refactoring.Refactoring;
import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.internal.core.refactoring.RefactoringCoreMessages;
/**
* Default implementation of a refactoring descriptor. This refactoring descriptor can only be used
* as temporary storage to transfer refactoring descriptor data.
* {@link #createRefactoring(RefactoringStatus)} always returns null.
*
* @author Mohsen Vakilian, nchen - Added ability to add more information by cloning an existing
* descriptor.
*
* @since 3.2
*/
public final class DefaultRefactoringDescriptor extends RefactoringDescriptor {
/** The map of arguments (element type: <String, String>) */
private final Map fArguments;
/**
* Creates a new default refactoring descriptor.
*
* @param id the unique id of the refactoring
* @param project the project name, or <code>null</code>
* @param description the description
* @param comment the comment, or <code>null</code>
* @param arguments the argument map
* @param flags the flags
*/
public DefaultRefactoringDescriptor(final String id, final String project, final String description, final String comment, final Map arguments, final int flags) {
super(id, project, description, comment, flags);
Assert.isNotNull(arguments);
fArguments= Collections.unmodifiableMap(new HashMap(arguments));
}
/**
* {@inheritDoc}
*
* @return always null
*/
public Refactoring createRefactoring(final RefactoringStatus status) throws CoreException {
status.merge(RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.DefaultRefactoringDescriptor_cannot_create_refactoring));
return null;
}
/**
* Returns the argument map
*
* @return the argument map.
*/
public Map getArguments() {
return fArguments;
}
//////////////////
// CODINGSPECTATOR
//////////////////
public RefactoringDescriptor cloneByAugmenting(Map arguments) {
Map augmentedArguments= new HashMap(getArguments());
augmentedArguments.putAll(arguments);
DefaultRefactoringDescriptor augmentedDescriptor= new DefaultRefactoringDescriptor(getID(), getProject(), getDescription(), getComment(), augmentedArguments, getFlags());
if (getTimeStamp() != -1) {
augmentedDescriptor.setTimeStamp(getTimeStamp());
}
return augmentedDescriptor;
}
}