001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.j2ee.jpa.refactoring.rename;
043:
044: import java.text.MessageFormat;
045: import org.netbeans.modules.j2ee.core.api.support.java.JavaIdentifiers;
046: import org.netbeans.modules.j2ee.persistence.dd.persistence.model_1_0.PersistenceUnit;
047: import org.netbeans.modules.j2ee.persistence.provider.ProviderUtil;
048: import org.netbeans.modules.j2ee.persistence.unit.PUDataObject;
049: import org.netbeans.modules.refactoring.api.AbstractRefactoring;
050: import org.netbeans.modules.refactoring.api.RenameRefactoring;
051: import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation;
052: import org.openide.filesystems.FileObject;
053: import org.openide.util.NbBundle;
054: import org.netbeans.modules.j2ee.jpa.refactoring.PersistenceXmlRefactoring;
055: import org.netbeans.modules.j2ee.jpa.refactoring.RefactoringUtil;
056:
057: /**
058: * Handles renaming of the classes that are listed in <code>persistence.xml</code>.
059: *
060: * @author Erno Mononen
061: */
062: public final class PersistenceXmlRename extends
063: PersistenceXmlRefactoring {
064:
065: private final RenameRefactoring renameRefactoring;
066:
067: public PersistenceXmlRename(RenameRefactoring rename) {
068: this .renameRefactoring = rename;
069: }
070:
071: protected AbstractRefactoring getRefactoring() {
072: return renameRefactoring;
073: }
074:
075: protected RefactoringElementImplementation getRefactoringElement(
076: PersistenceUnit persistenceUnit, FileObject clazz,
077: PUDataObject pUDataObject, FileObject persistenceXml) {
078:
079: String clazzFqn = JavaIdentifiers.getQualifiedName(clazz);
080: String newName = RefactoringUtil.renameClass(clazzFqn,
081: renameRefactoring.getNewName());
082: return new PersistenceXmlClassRenameRefactoringElement(
083: persistenceUnit, clazzFqn, newName, pUDataObject,
084: persistenceXml);
085: }
086:
087: /**
088: * A rename element for persistence.xml
089: */
090: private static class PersistenceXmlClassRenameRefactoringElement
091: extends PersistenceXmlRefactoringElement {
092:
093: private final String newName;
094:
095: public PersistenceXmlClassRenameRefactoringElement(
096: PersistenceUnit persistenceUnit, String oldName,
097: String newName, PUDataObject puDataObject,
098: FileObject parentFile) {
099: super (persistenceUnit, oldName, puDataObject, parentFile);
100: this .newName = newName;
101: }
102:
103: /**
104: * Returns text describing the refactoring formatted for display (using HTML tags).
105: * @return Formatted text.
106: */
107: public String getDisplayText() {
108: Object[] args = new Object[] { parentFile.getNameExt(),
109: clazz, newName };
110: return MessageFormat.format(NbBundle.getMessage(
111: PersistenceXmlRename.class,
112: "TXT_PersistenceXmlRename"), args);
113: }
114:
115: public void undoChange() {
116: ProviderUtil.renameManagedClass(persistenceUnit, clazz,
117: newName, puDataObject);
118: }
119:
120: /** Performs the change represented by this refactoring element.
121: */
122: public void performChange() {
123: ProviderUtil.renameManagedClass(persistenceUnit, newName,
124: clazz, puDataObject);
125: }
126:
127: }
128:
129: }
|