/******************************************************************************* * Copyright (c) 2010 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.hibernate.eclipse.launch.core.refactoring; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.osgi.util.NLS; import org.hibernate.console.KnownConfigurations; import org.hibernate.eclipse.launch.HibernateLaunchConstants; /** * @author Dmitry Geraskov * */ public class CodeGenerationConsoleNameChange extends Change { private ILaunchConfiguration fLaunchConfiguration; private String newCCName; public CodeGenerationConsoleNameChange(ILaunchConfiguration launchConfiguration, String newCCName){ assert KnownConfigurations.getInstance().isKnownConfiguration(launchConfiguration.getName()); this.fLaunchConfiguration = launchConfiguration; this.newCCName = newCCName; } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.Change#getName() */ @Override public String getName() { return NLS.bind(Messages.CodeGenerationConsoleNameChange_update, fLaunchConfiguration.getName()); } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.Change#initializeValidationData(org.eclipse.core.runtime.IProgressMonitor) */ @Override public void initializeValidationData(IProgressMonitor pm) {} /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.Change#isValid(org.eclipse.core.runtime.IProgressMonitor) */ @Override public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException, OperationCanceledException { if (fLaunchConfiguration.getAttribute(HibernateLaunchConstants.ATTR_CONSOLE_CONFIGURATION_NAME, (String)null) == null){ return RefactoringStatus.createFatalErrorStatus(Messages.CodeGenerationConsoleNameChange_error_null_confi); } else if (newCCName == null || newCCName.trim().length() == 0){ return RefactoringStatus.createFatalErrorStatus(Messages.CodeGenerationConsoleNameChange_error_empty_name); } return new RefactoringStatus(); } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.Change#perform(org.eclipse.core.runtime.IProgressMonitor) */ @Override public Change perform(IProgressMonitor pm) throws CoreException { String oldName = fLaunchConfiguration.getAttribute(HibernateLaunchConstants.ATTR_CONSOLE_CONFIGURATION_NAME, new String()); ILaunchConfigurationWorkingCopy wc = fLaunchConfiguration.getWorkingCopy(); wc.setAttribute(HibernateLaunchConstants.ATTR_CONSOLE_CONFIGURATION_NAME, newCCName); ILaunchConfiguration newLaunchConfig = wc.doSave(); return new CodeGenerationConsoleNameChange(newLaunchConfig, oldName); } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.Change#getModifiedElement() */ @Override public Object getModifiedElement() { return fLaunchConfiguration; } }