package org.objectstyle.wolips.wodclipse.core.refactoring; import java.util.Set; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.NamingConventions; import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility; import org.objectstyle.wolips.bindings.utils.BindingReflectionUtils; import org.objectstyle.wolips.eomodeler.core.model.EOEntity; import org.objectstyle.wolips.eomodeler.core.model.EOModelGroup; import org.objectstyle.wolips.wodclipse.core.completion.WodParserCache; public class AddKeyInfo { private EOModelGroup _modelGroup; private IType _componentType; private String _name; private String _typeName; private String _parameterTypeName; private boolean _createField; private boolean _createAccessorMethod; private boolean _prependGetToAccessorMethod; private boolean _createMutatorMethod; public AddKeyInfo(IType componentType) { _componentType = componentType; _name = "newKey"; _typeName = "java.lang.String"; _createField = true; _createAccessorMethod = true; _prependGetToAccessorMethod = false; _createMutatorMethod = true; } public EOModelGroup getModelGroup() { if (_modelGroup == null) { _modelGroup = WodParserCache.getModelGroupCache().getModelGroup(_componentType.getJavaProject().getProject()); } return _modelGroup; } public String[] getEntityNames() { EOModelGroup modelGroup = getModelGroup(); Set<String> entityNames = modelGroup.getNonPrototypeEntityNames(); return entityNames.toArray(new String[entityNames.size()]); } public String getJavaTypeName() throws JavaModelException { String javaTypeName = _typeName; if (javaTypeName != null) { EOEntity entity = getModelGroup().getEntityNamed(_typeName); if (entity != null) { javaTypeName = entity.getClassName(); } javaTypeName = BindingReflectionUtils.getFullClassName(_componentType.getJavaProject(), javaTypeName); } return javaTypeName; } public String getJavaParameterTypeName() throws JavaModelException { String javaParameterTypeName = _parameterTypeName; if (javaParameterTypeName != null) { EOEntity entity = getModelGroup().getEntityNamed(_parameterTypeName); if (entity != null) { javaParameterTypeName = entity.getClassName(); } javaParameterTypeName = BindingReflectionUtils.getFullClassName(_componentType.getJavaProject(), javaParameterTypeName); } return javaParameterTypeName; } public IType getComponentType() { return _componentType; } public String getName() { return _name; } public void setName(String name) { _name = name; } public String getTypeName() { return _typeName; } public void setTypeName(String typeName) { _typeName = typeName; } public String getParameterTypeName() { return _parameterTypeName; } public void setParameterTypeName(String parameterTypeName) { _parameterTypeName = parameterTypeName; } public boolean isCreateField() { return _createField; } public void setCreateField(boolean createField) { _createField = createField; } public boolean isCreateAccessorMethod() { return _createAccessorMethod; } public void setCreateAccessorMethod(boolean createAccessorMethod) { _createAccessorMethod = createAccessorMethod; } public boolean isPrependGetToAccessorMethod() { return _prependGetToAccessorMethod; } public void setPrependGetToAccessorMethod(boolean prependGetToAccessorMethod) { _prependGetToAccessorMethod = prependGetToAccessorMethod; } public boolean isCreateMutatorMethod() { return _createMutatorMethod; } public void setCreateMutatorMethod(boolean createMutatorMethod) { _createMutatorMethod = createMutatorMethod; } public String getFieldName() { String[] suggestedFieldNames = StubUtility.getVariableNameSuggestions(NamingConventions.VK_INSTANCE_FIELD, _componentType.getJavaProject(), getName(), 0, null, true); String fieldName = suggestedFieldNames[0]; return fieldName; } }