blob: ade346fa904a5d77e8c52c7087e446d012031d31 [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.eclipse.org/org/documents/epl-v10.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.eclipse.adt.internal.refactorings.core;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
/**
* A result from a renaming operation
*/
public class RenameResult {
private boolean mCanceled;
private boolean mUnavailable;
private @Nullable String mName;
private boolean mClear;
/**
* Constructs a new rename result
*/
private RenameResult() {
}
/**
* Creates a new blank {@linkplain RenameResult}
* @return a new result
*/
@NonNull
public static RenameResult create() {
return new RenameResult();
}
/**
* Creates a new {@linkplain RenameResult} for a user canceled renaming operation
* @return a canceled operation
*/
@NonNull
public static RenameResult canceled() {
return new RenameResult().setCanceled(true);
}
/**
* Creates a {@linkplain RenameResult} for a renaming operation that was
* not available (for example because the field attempted to be renamed
* does not yet exist (or does not exist any more)
*
* @return a new result
*/
@NonNull
public static RenameResult unavailable() {
return new RenameResult().setUnavailable(true);
}
/**
* Creates a new {@linkplain RenameResult} for a successful renaming
* operation to the given name
*
* @param name the new name
* @return a new result
*/
@NonNull
public static RenameResult name(@Nullable String name) {
return new RenameResult().setName(name);
}
/**
* Marks this result as canceled
*
* @param canceled whether the result was canceled
* @return this, for constructor chaining
*/
@NonNull
public RenameResult setCanceled(boolean canceled) {
mCanceled = canceled;
return this;
}
/**
* Marks this result as unavailable
*
* @param unavailable whether this result was unavailable
* @return this, for constructor chaining
*/
@NonNull
public RenameResult setUnavailable(boolean unavailable) {
mUnavailable = unavailable;
return this;
}
/**
* Sets the new name of the renaming operation
*
* @param name the new name
* @return this, for constructor chaining
*/
@NonNull
public RenameResult setName(@Nullable String name) {
mName = name;
return this;
}
/**
* Marks this result as clearing the name (reverting it back to the default)
*
* @param clear whether the name was cleared
* @return this, for constructor chaining
*/
@NonNull
public RenameResult setCleared(boolean clear) {
mClear = clear;
return this;
}
/**
* Returns whether this result represents a canceled renaming operation
*
* @return true if the operation was canceled
*/
public boolean isCanceled() {
return mCanceled;
}
/**
* Returns whether this result represents an unavailable renaming operation
*
* @return true if the operation was not available
*/
public boolean isUnavailable() {
return mUnavailable;
}
/**
* Returns whether this result represents a renaming back to the default (possibly
* clear) name. In this case, {@link #getName()} will return {@code null}.
*
* @return true if the name should be reset
*/
public boolean isCleared() {
return mClear;
}
/**
* Returns the new name.
*
* @return the new name
*/
@Nullable
public String getName() {
return mName;
}
}