/******************************************************************************* * Copyright (c) 2007-2011 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 java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IResource; 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.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; import org.eclipse.ltk.core.refactoring.participants.RenameParticipant; import org.hibernate.console.ConsoleConfiguration; import org.hibernate.console.KnownConfigurations; import org.hibernate.eclipse.console.HibernateConsoleMessages; /** * @author Dmitry Geraskov * */ public class RenameResourceParticipant extends RenameParticipant { private IResource fResource; /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext) */ public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) throws OperationCanceledException { return new RefactoringStatus(); } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor) */ public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { ILaunchConfiguration[] configs = HibernateRefactoringUtil.getAffectedConsoleConfigs(fResource.getFullPath()); List<Change> changes = new ArrayList<Change>(); Change change = null; for (int i= 0; i < configs.length; i++) { ConsoleConfiguration cc = KnownConfigurations.getInstance().find(configs[i].getName()); if (cc != null) { cc.reset(); } change = new LaunchConfigurationResourceNameChange(configs[i], fResource.getFullPath(), fResource.getParent().getFullPath().append(getArguments().getNewName())); changes.add(change); } configs = HibernateRefactoringUtil.getAffectedCodeGenerationConfigs(fResource.getFullPath()); for (int i= 0; i < configs.length; i++) { change = new CodeGenerationResourceNameChange(configs[i], fResource.getFullPath(), fResource.getParent().getFullPath().append(getArguments().getNewName())); changes.add(change); } return HibernateRefactoringUtil.createChangesFromList(changes, getName()); } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName() */ public String getName() { return HibernateConsoleMessages.RenameResourceParticipant_launch_configurations_updates; } /* (non-Javadoc) * @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object) */ protected boolean initialize(Object element) { fResource = (IResource) element; return true; } }