blob: 4a953d71ddbe0f0a9f937ff3f8c4f82312e3ec92 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 org.netbeans.modules.j2ee.jpa.refactoring.rename;
import java.text.MessageFormat;
import org.netbeans.modules.j2ee.core.api.support.java.JavaIdentifiers;
import org.netbeans.modules.j2ee.persistence.dd.common.PersistenceUnit;
import org.netbeans.modules.j2ee.persistence.provider.ProviderUtil;
import org.netbeans.modules.j2ee.persistence.unit.PUDataObject;
import org.netbeans.modules.refactoring.api.AbstractRefactoring;
import org.netbeans.modules.refactoring.api.RenameRefactoring;
import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation;
import org.openide.filesystems.FileObject;
import org.openide.util.NbBundle;
import org.netbeans.modules.j2ee.jpa.refactoring.PersistenceXmlRefactoring;
import org.netbeans.modules.j2ee.jpa.refactoring.RefactoringUtil;
/**
* Handles renaming of the classes that are listed in <code>persistence.xml</code>.
*
* @author Erno Mononen
*/
public final class PersistenceXmlRename extends PersistenceXmlRefactoring {
private final RenameRefactoring renameRefactoring;
public PersistenceXmlRename(RenameRefactoring rename) {
this.renameRefactoring = rename;
}
protected AbstractRefactoring getRefactoring() {
return renameRefactoring;
}
protected RefactoringElementImplementation getRefactoringElement(PersistenceUnit persistenceUnit,
FileObject clazz,
PUDataObject pUDataObject,
FileObject persistenceXml) {
String clazzFqn = JavaIdentifiers.getQualifiedName(clazz);
String newName = RefactoringUtil.renameClass(clazzFqn, renameRefactoring.getNewName());
return new PersistenceXmlClassRenameRefactoringElement(persistenceUnit, clazzFqn, newName, pUDataObject, persistenceXml);
}
/**
* A rename element for persistence.xml
*/
private static class PersistenceXmlClassRenameRefactoringElement extends PersistenceXmlRefactoringElement {
private final String newName;
public PersistenceXmlClassRenameRefactoringElement(PersistenceUnit persistenceUnit,
String oldName, String newName, PUDataObject puDataObject, FileObject parentFile) {
super(persistenceUnit, oldName, puDataObject, parentFile);
this.newName = newName;
}
/**
* Returns text describing the refactoring formatted for display (using HTML tags).
* @return Formatted text.
*/
public String getDisplayText() {
Object[] args = new Object [] {parentFile.getNameExt(), clazz, newName};
return MessageFormat.format(NbBundle.getMessage(PersistenceXmlRename.class, "TXT_PersistenceXmlRename"), args);
}
public void undoChange() {
ProviderUtil.renameManagedClass(persistenceUnit, clazz, newName, puDataObject);
}
/** Performs the change represented by this refactoring element.
*/
public void performChange() {
ProviderUtil.renameManagedClass(persistenceUnit, newName, clazz, puDataObject);
}
}
}