001: /*******************************************************************************
002: * Copyright (c) 2000, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.ui.refactoring.nls;
011:
012: import org.eclipse.core.runtime.IPath;
013:
014: import org.eclipse.jface.dialogs.IDialogSettings;
015:
016: import org.eclipse.jdt.core.IJavaElement;
017: import org.eclipse.jdt.core.IPackageFragment;
018: import org.eclipse.jdt.core.JavaCore;
019:
020: import org.eclipse.jdt.ui.JavaElementLabels;
021:
022: /**
023: *
024: */
025: public class AccessorDescription {
026:
027: private final static String KEY_ACCESSOR_NAME = "accessorName"; //$NON-NLS-1$
028: private final static String KEY_ACCESSOR_PACK = "accessorPackage"; //$NON-NLS-1$
029: private final static String KEY_RESOURCE_BUNDLE_NAME = "bundleName"; //$NON-NLS-1$
030: private final static String KEY_RESOURCE_BUNDLE_PACK = "bundlePackage"; //$NON-NLS-1$
031:
032: private final IPackageFragment fResourceBundlePackage;
033: private final String fAccessorClassName;
034: private final IPackageFragment fAccessorClassPackage;
035: private final String fResourceBundleName;
036:
037: /**
038: *
039: */
040: public AccessorDescription(String accessorClassName,
041: IPackageFragment accessorClassPackage,
042: String propertyFileName,
043: IPackageFragment propertyFilePackage) {
044: super ();
045: fAccessorClassName = accessorClassName;
046: fAccessorClassPackage = accessorClassPackage;
047: fResourceBundleName = propertyFileName;
048: fResourceBundlePackage = propertyFilePackage;
049: }
050:
051: public String getLabel() {
052: StringBuffer buf = new StringBuffer();
053: buf.append(getAccessorClassPackage().getElementName());
054: if (buf.length() > 0) {
055: buf.append('.');
056: }
057: buf.append(getAccessorClassName());
058: buf.append(JavaElementLabels.CONCAT_STRING);
059: IPath propertyFilePath = getResourceBundlePackage().getPath()
060: .append(getResourceBundleName());
061: buf.append(propertyFilePath.makeRelative().toString());
062: return buf.toString();
063: }
064:
065: public void serialize(IDialogSettings settings) {
066: settings.put(KEY_ACCESSOR_NAME, getAccessorClassName());
067: settings.put(KEY_ACCESSOR_PACK, getAccessorClassPackage()
068: .getHandleIdentifier());
069: settings.put(KEY_RESOURCE_BUNDLE_NAME, getResourceBundleName());
070: settings.put(KEY_RESOURCE_BUNDLE_PACK,
071: getResourceBundlePackage().getHandleIdentifier());
072: }
073:
074: /**
075: * @return Returns the accessor class name.
076: */
077: public String getAccessorClassName() {
078: return fAccessorClassName;
079: }
080:
081: /**
082: * @return Returns the accessor class package.
083: */
084: public IPackageFragment getAccessorClassPackage() {
085: return fAccessorClassPackage;
086: }
087:
088: /**
089: * @return Returns the resource bundle name.
090: */
091: public String getResourceBundleName() {
092: return fResourceBundleName;
093: }
094:
095: /**
096: * @return Returns the resource bundle package
097: */
098: public IPackageFragment getResourceBundlePackage() {
099: return fResourceBundlePackage;
100: }
101:
102: /* (non-Javadoc)
103: * @see java.lang.Object#equals(java.lang.Object)
104: */
105: public boolean equals(Object obj) {
106: if (obj != null && obj.getClass().equals(getClass())) {
107: AccessorDescription other = (AccessorDescription) obj;
108: return other == this
109: || (other.fAccessorClassName
110: .equals(fAccessorClassName)
111: && other.fAccessorClassPackage
112: .equals(fAccessorClassPackage)
113: && other.fResourceBundleName
114: .equals(fResourceBundleName) && other.fResourceBundlePackage
115: .equals(fResourceBundlePackage));
116: }
117: return false;
118: }
119:
120: /* (non-Javadoc)
121: * @see java.lang.Object#hashCode()
122: */
123: public int hashCode() {
124: return fAccessorClassName.hashCode()
125: + fAccessorClassPackage.hashCode()
126: + fResourceBundleName.hashCode()
127: + fResourceBundlePackage.hashCode();
128: }
129:
130: public static AccessorDescription deserialize(
131: IDialogSettings settings) {
132: String accessorName = settings.get(KEY_ACCESSOR_NAME);
133: if (accessorName == null) {
134: return null;
135: }
136:
137: String accessorPackHandle = settings.get(KEY_ACCESSOR_PACK);
138: if (accessorPackHandle == null) {
139: return null;
140: }
141: IJavaElement accessorPack = JavaCore.create(accessorPackHandle);
142: if (!(accessorPack instanceof IPackageFragment)
143: || !accessorPack.exists()) {
144: return null;
145: }
146:
147: String bundleName = settings.get(KEY_RESOURCE_BUNDLE_NAME);
148: if (bundleName == null) {
149: return null;
150: }
151:
152: String bundlePackHandle = settings
153: .get(KEY_RESOURCE_BUNDLE_PACK);
154: if (bundlePackHandle == null) {
155: return null;
156: }
157: IJavaElement bundlePack = JavaCore.create(bundlePackHandle);
158: if (!(bundlePack instanceof IPackageFragment)
159: || !bundlePack.exists()) {
160: return null;
161: }
162:
163: return new AccessorDescription(accessorName,
164: (IPackageFragment) accessorPack, bundleName,
165: (IPackageFragment) bundlePack);
166: }
167: }
|