/******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.ui; import net.sourceforge.phpdt.core.ICompilationUnit; import net.sourceforge.phpdt.core.IMethod; import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility; import org.eclipse.core.runtime.CoreException; /** * Class that offers access to the templates contained in the 'code templates' * preference page. * * @since 2.1 */ public class CodeGeneration { private CodeGeneration() { } /** * Returns the content for a new compilation unit using the 'new Java file' * code template. * * @param cu * The compilation to create the source for. The compilation unit * does not need to exist. * @param typeComment * The comment for the type to be created. Used when the code * template contains a ${typecomment} variable. Can be * null if no comment should be added. * @param typeContent * The code of the type, including type declaration and body. * @param lineDelimiter * The line delimiter to be used. * @return Returns the new content or null if the template is * undefined or empty. * @throws CoreException * Thrown when the evaluation of the code template fails. */ // public static String getCompilationUnitContent(ICompilationUnit cu, // String typeComment, String typeContent, String lineDelimiter) // throws CoreException { // return StubUtility.getCompilationUnitContent(cu, typeComment, // typeContent, lineDelimiter); // } /** * Returns the content for a new type comment using the 'type comment' code * template. The returned content is unformatted and is not indented. * * @param cu * The compilation where the type is contained. The compilation * unit does not need to exist. * @param typeQualifiedName * The name of the type to which the comment is added. For inner * types the name must be qualified and include the outer types * names (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param lineDelimiter * The line delimiter to be used. * @return Returns the new content or null if the code * template is undefined or empty. The returned content is * unformatted and is not indented. * @throws CoreException * Thrown when the evaluation of the code template fails. */ public static String getTypeComment(ICompilationUnit cu, String typeQualifiedName, String lineDelimiter) throws CoreException { return StubUtility.getTypeComment(cu, typeQualifiedName, lineDelimiter); } /** * Returns the content for a new field comment using the 'field comment' * code template. The returned content is unformatted and is not indented. * * @param cu * The compilation where the field is contained. The compilation * unit does not need to exist. * @param typeName * The name of the field declared type. * @param fieldName * The name of the field to which the comment is added. * @param lineDelimiter * The line delimiter to be used. * @return Returns the new content or null if the code * template is undefined or empty. The returned content is * unformatted and is not indented. * @throws CoreException * Thrown when the evaluation of the code template fails. * @since 3.0 */ // public static String getFieldComment(ICompilationUnit cu, String typeName, // String fieldName, String lineDelimiter) throws CoreException { // return StubUtility.getFieldComment(cu, typeName, fieldName, // lineDelimiter); // } /** * Returns the comment for a method or constructor using the comment code * templates (constructor / method / overriding method). null * is returned if the template is empty. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param decl * The MethodDeclaration AST node that will be added as new * method. The node does not need to exist in an AST (no parent * needed) and does not need to resolve. See * {@link net.sourceforge.phpdt.core.dom.AST#newMethodDeclaration()} * for how to create such a node. * @param overridden * The binding of the method that will be overridden by the * created method or null if no method is * overridden. * @param lineDelimiter * The line delimiter to be used. * @return Returns the generated method comment or null if * the code template is empty. The returned content is unformatted * and not indented (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. */ // public static String getMethodComment(ICompilationUnit cu, String // declaringTypeName, MethodDeclaration decl, IMethodBinding overridden, // String lineDelimiter) throws CoreException { // return StubUtility.getMethodComment(cu, declaringTypeName, decl, // overridden, lineDelimiter); // } /** * Returns the comment for a method or constructor using the comment code * templates (constructor / method / overriding method). null * is returned if the template is empty. *

* The returned string is unformatted and not indented. *

* Exception types and return type are in signature notation. e.g. a source * method declared as public void foo(String text, int length) * would return the array {"QString;","I"} as parameter * types. See {@link net.sourceforge.phpdt.core.Signature}. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * Name of the method. * @param paramNames * Names of the parameters for the method. * @param excTypeSig * Thrown exceptions (Signature notation). * @param retTypeSig * Return type (Signature notation) or null for * constructors. * @param overridden * The method that will be overridden by the created method or * null for non-overriding methods. If not * null, the method must exist. * @param lineDelimiter * The line delimiter to be used. * @return Returns the constructed comment or null if the * comment code template is empty. The returned content is * unformatted and not indented (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. */ public static String getMethodComment(ICompilationUnit cu, String declaringTypeName, String methodName, String[] paramNames, String[] excTypeSig, String retTypeSig, IMethod overridden, String lineDelimiter) throws CoreException { return StubUtility.getMethodComment(cu, declaringTypeName, methodName, paramNames, excTypeSig, retTypeSig, overridden, lineDelimiter); } /** * Returns the comment for a method or constructor using the comment code * templates (constructor / method / overriding method). null * is returned if the template is empty. *

* The returned string is unformatted and not indented. * * @param method * The method to be documented. The method must exist. * @param overridden * The method that will be overridden by the created method or * null for non-overriding methods. If not * null, the method must exist. * @param lineDelimiter * The line delimiter to be used. * @return Returns the constructed comment or null if the * comment code template is empty. The returned string is * unformatted and and has no indent (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. */ public static String getMethodComment(IMethod method, IMethod overridden, String lineDelimiter) throws CoreException { return StubUtility.getMethodComment(method, overridden, lineDelimiter); } /** * Returns the content of the body for a method or constructor using the * method body templates. null is returned if the template is * empty. *

* The returned string is unformatted and not indented. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * Name of the method. * @param isConstructor * Defines if the created body is for a constructor. * @param bodyStatement * The code to be entered at the place of the variable * ${body_statement}. * @param lineDelimiter * The line delimiter to be used. * @return Returns the constructed body content or null if * the comment code template is empty. The returned string is * unformatted and and has no indent (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. */ // public static String getMethodBodyContent(ICompilationUnit cu, // String declaringTypeName, String methodName, boolean isConstructor, // String bodyStatement, String lineDelimiter) throws CoreException { // return StubUtility.getMethodBodyContent(isConstructor, cu // .getJavaProject(), declaringTypeName, methodName, // bodyStatement, lineDelimiter); // } /** * Returns the content of body for a getter method using the getter method * body template. null is returned if the template is empty. *

* The returned string is unformatted and not indented. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * The name of the getter method. * @param fieldName * The name of the field to get in the getter method, * corresponding to the template variable for ${field}. * @param lineDelimiter * The line delimiter to be used. * @return Returns the constructed body content or null if * the comment code template is empty. The returned string is * unformatted and and has no indent (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. * @since 3.0 */ // public static String getGetterMethodBodyContent(ICompilationUnit cu, // String declaringTypeName, String methodName, String fieldName, // String lineDelimiter) throws CoreException { // return StubUtility.getGetterMethodBodyContent(cu.getJavaProject(), // declaringTypeName, methodName, fieldName, lineDelimiter); // } /** * Returns the content of body for a setter method using the setter method * body template. null is returned if the template is empty. *

* The returned string is unformatted and not indented. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * The name of the setter method. * @param fieldName * The name of the field to be set in the setter method, * corresponding to the template variable for ${field}. * @param paramName * The name of the parameter passed to the setter method, * corresponding to the template variable for $(param). * @param lineDelimiter * The line delimiter to be used. * @return Returns the constructed body content or null if * the comment code template is empty. The returned string is * unformatted and and has no indent (formatting required). * @throws CoreException * Thrown when the evaluation of the code template fails. * @since 3.0 */ // public static String getSetterMethodBodyContent(ICompilationUnit cu, // String declaringTypeName, String methodName, String fieldName, // String paramName, String lineDelimiter) throws CoreException { // return StubUtility.getSetterMethodBodyContent(cu.getJavaProject(), // declaringTypeName, methodName, fieldName, paramName, // lineDelimiter); // } /** * Returns the comment for a getter method using the getter comment * template. null is returned if the template is empty. *

* The returned string is unformatted and not indented. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * Name of the method. * @param fieldName * Name of the field to get. * @param fieldType * The type of the field to get. * @param bareFieldName * The field name without prefix or suffix. * @param lineDelimiter * The line delimiter to be used. * @return Returns the generated getter comment or null if * the code template is empty. The returned content is not indented. * @throws CoreException * Thrown when the evaluation of the code template fails. * @since 3.0 */ public static String getGetterComment(ICompilationUnit cu, String declaringTypeName, String methodName, String fieldName, String fieldType, String bareFieldName, String lineDelimiter) throws CoreException { return StubUtility.getGetterComment(cu, declaringTypeName, methodName, fieldName, fieldType, bareFieldName, lineDelimiter); } /** * Returns the comment for a setter method using the setter method body * template. null is returned if the template is empty. *

* The returned string is unformatted and not indented. * * @param cu * The compilation unit to which the method belongs. The * compilation unit does not need to exist. * @param declaringTypeName * Name of the type to which the method belongs. For inner types * the name must be qualified and include the outer types names * (dot separated). See * {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}. * @param methodName * Name of the method. * @param fieldName * Name of the field that is set. * @param fieldType * The type of the field that is to set. * @param paramName * The name of the parameter that used to set. * @param bareFieldName * The field name without prefix or suffix. * @param lineDelimiter * The line delimiter to be used. * @return Returns the generated setter comment or null if * the code template is empty. The returned comment is not indented. * @throws CoreException * Thrown when the evaluation of the code template fails. * @since 3.0 */ public static String getSetterComment(ICompilationUnit cu, String declaringTypeName, String methodName, String fieldName, String fieldType, String paramName, String bareFieldName, String lineDelimiter) throws CoreException { return StubUtility.getSetterComment(cu, declaringTypeName, methodName, fieldName, fieldType, paramName, bareFieldName, lineDelimiter); } }