Copyright (c) 2000, 2008 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2008 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.ltk.core.refactoring; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.resources.IWorkspaceRunnable;
Operation that, when run, checks the preconditions of the Refactoring passed on creation.

The operation should be executed via the run method offered by IWorkspace to achieve proper delta batching.

Note: this class is not intended to be extended by clients.

See Also:
Since:3.0
@noextendThis class is not intended to be subclassed by clients.
/** * Operation that, when run, checks the preconditions of the {@link Refactoring} * passed on creation. * <p> * The operation should be executed via the run method offered by * <code>IWorkspace</code> to achieve proper delta batching. * </p> * <p> * Note: this class is not intended to be extended by clients. * </p> * * @see org.eclipse.ltk.core.refactoring.Refactoring#checkInitialConditions(IProgressMonitor) * @see org.eclipse.ltk.core.refactoring.Refactoring#checkFinalConditions(IProgressMonitor) * @see org.eclipse.ltk.core.refactoring.Refactoring#checkAllConditions(IProgressMonitor) * * @since 3.0 * * @noextend This class is not intended to be subclassed by clients. */
public class CheckConditionsOperation implements IWorkspaceRunnable { private Refactoring fRefactoring; private int fStyle; private RefactoringStatus fStatus;
Flag indicating that no conditions will be checked
/** Flag indicating that no conditions will be checked */
public final static int NONE= 0;
Flag indicating that only initial conditions will be checked
/** Flag indicating that only initial conditions will be checked*/
public final static int INITIAL_CONDITONS= 1 << 1;
Flag indicating that only final conditions will be checked
/** Flag indicating that only final conditions will be checked */
public final static int FINAL_CONDITIONS= 1 << 2;
Flag indicating that all conditions will be checked
/** Flag indicating that all conditions will be checked */
public final static int ALL_CONDITIONS= INITIAL_CONDITONS | FINAL_CONDITIONS; private final static int LAST= 1 << 3;
Creates a new CheckConditionsOperation.
Params:
  • refactoring – the refactoring for which the preconditions are to be checked.
  • style – style to define which conditions to check. Must be one of INITIAL_CONDITONS, FINAL_CONDITIONS or ALL_CONDITIONS
/** * Creates a new <code>CheckConditionsOperation</code>. * * @param refactoring the refactoring for which the preconditions are to * be checked. * @param style style to define which conditions to check. Must be one of * <code>INITIAL_CONDITONS</code>, <code>FINAL_CONDITIONS</code> or * <code>ALL_CONDITIONS</code> */
public CheckConditionsOperation(Refactoring refactoring, int style) { Assert.isNotNull(refactoring); fRefactoring= refactoring; fStyle= style; Assert.isTrue(checkStyle(fStyle)); } @Override public void run(IProgressMonitor pm) throws CoreException { if (pm == null) pm= new NullProgressMonitor(); try { fStatus= null; if ((fStyle & ALL_CONDITIONS) == ALL_CONDITIONS) fStatus= fRefactoring.checkAllConditions(pm); else if ((fStyle & INITIAL_CONDITONS) == INITIAL_CONDITONS) fStatus= fRefactoring.checkInitialConditions(pm); else if ((fStyle & FINAL_CONDITIONS) == FINAL_CONDITIONS) fStatus= fRefactoring.checkFinalConditions(pm); } finally { pm.done(); } }
Returns the outcome of the operation or null if an exception has occurred while performing the operation or if the operation hasn't been performed yet.
Returns:the RefactoringStatus of the condition checking
/** * Returns the outcome of the operation or <code>null</code> if an exception * has occurred while performing the operation or if the operation hasn't * been performed yet. * * @return the {@link RefactoringStatus} of the condition checking */
public RefactoringStatus getStatus() { return fStatus; }
Returns the operation's refactoring
Returns:the operation's refactoring
/** * Returns the operation's refactoring * * @return the operation's refactoring */
public Refactoring getRefactoring() { return fRefactoring; }
Returns the condition checking style.
Returns:the condition checking style
/** * Returns the condition checking style. * * @return the condition checking style */
public int getStyle() { return fStyle; } private boolean checkStyle(int style) { return style > NONE && style < LAST; } /* package */ int getTicks(RefactoringTickProvider provider) { if ((fStyle & ALL_CONDITIONS) == ALL_CONDITIONS) return provider.getCheckAllConditionsTicks(); else if ((fStyle & INITIAL_CONDITONS) == INITIAL_CONDITONS) return provider.getCheckInitialConditionsTicks(); else if ((fStyle & FINAL_CONDITIONS) == FINAL_CONDITIONS) return provider.getCheckFinalConditionsTicks(); return 0; } }