001: /*******************************************************************************
002: * Copyright (c) 2005, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.corext.refactoring;
011:
012: import java.util.HashMap;
013: import java.util.Iterator;
014: import java.util.Map;
015: import java.util.Map.Entry;
016:
017: import org.eclipse.core.runtime.Assert;
018:
019: import org.eclipse.ltk.core.refactoring.RefactoringContribution;
020: import org.eclipse.ltk.core.refactoring.RefactoringDescriptor;
021: import org.eclipse.ltk.core.refactoring.participants.RefactoringArguments;
022:
023: /**
024: * Refactoring arguments which provide the ability to set arguments using
025: * key-value pairs of strings.
026: *
027: * @see RefactoringContribution
028: * @see RefactoringDescriptor
029: *
030: * @since 3.2
031: */
032: public final class JavaRefactoringArguments extends
033: RefactoringArguments {
034:
035: /** The attribute map (element type: <code><String, String></code>) */
036: private final Map fAttributes = new HashMap(2);
037:
038: /** The name of the project, or <code>null</code> for the workspace */
039: private String fProject;
040:
041: /**
042: * Creates a new java refactoring arguments.
043: *
044: * @param project
045: * the project, or <code>null</code> for the workspace
046: */
047: public JavaRefactoringArguments(final String project) {
048: setProject(project);
049: }
050:
051: /**
052: * Creates a new java refactoring arguments from arguments
053: *
054: * @param project
055: * the project, or <code>null</code> for the workspace
056: * @param arguments
057: * the arguments
058: */
059: public JavaRefactoringArguments(String project, Map arguments) {
060: this (project);
061: for (final Iterator iterator = arguments.entrySet().iterator(); iterator
062: .hasNext();) {
063: final Map.Entry entry = (Entry) iterator.next();
064: final String name = (String) entry.getKey();
065: final String value = (String) entry.getValue();
066: if (name != null && !"".equals(name) && value != null) //$NON-NLS-1$
067: setAttribute(name, value);
068: }
069: }
070:
071: /**
072: * Returns the attribute with the specified name.
073: *
074: * @param name
075: * the name of the attribute
076: * @return the attribute value, or <code>null</code>
077: */
078: public String getAttribute(final String name) {
079: return (String) fAttributes.get(name);
080: }
081:
082: /**
083: * Returns the name of the project.
084: *
085: * @return the name of the project, or <code>null</code> for the workspace
086: */
087: public String getProject() {
088: return fProject;
089: }
090:
091: /**
092: * Sets the attribute with the specified name to the indicated value.
093: *
094: * @param name
095: * the name of the attribute
096: * @param value
097: * the value of the attribute
098: */
099: public void setAttribute(final String name, final String value) {
100: Assert.isNotNull(name);
101: Assert.isNotNull(value);
102: fAttributes.put(name, value);
103: }
104:
105: /**
106: * Sets the name of the project.
107: *
108: * @param project
109: * the name of the project, or <code>null</code> for the
110: * workspace
111: */
112: public void setProject(final String project) {
113: Assert.isTrue(project == null || !"".equals(project)); //$NON-NLS-1$
114: fProject = project;
115: }
116:
117: /**
118: * {@inheritDoc}
119: */
120: public String toString() {
121: return getClass().getName() + fAttributes.toString();
122: }
123: }
|