package com.liferay.ide.portlet.core.operation;
import java.util.*;
import com.liferay.ide.portlet.core.operation.*;
import org.eclipse.jst.j2ee.internal.common.operations.*;
/*******************************************************************************
* Copyright (c) 2000-2014 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*******************************************************************************/
/**
* @author Greg Amerson
*/
@SuppressWarnings({"restriction","unused"})
public class PortletTemplate implements INewPortletClassDataModelProperties
{
protected static String nl;
public static synchronized PortletTemplate create(String lineSeparator)
{
nl = lineSeparator;
PortletTemplate result = new PortletTemplate();
nl = null;
return result;
}
public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
protected final String TEXT_1 = "package ";
protected final String TEXT_2 = ";";
protected final String TEXT_3 = NL;
protected final String TEXT_4 = NL + "import ";
protected final String TEXT_5 = ";";
protected final String TEXT_6 = NL;
protected final String TEXT_7 = NL;
protected final String TEXT_8 = "/**" + NL + " * Portlet implementation class ";
protected final String TEXT_9 = NL + " */";
protected final String TEXT_10 = NL + "public ";
protected final String TEXT_11 = "abstract ";
protected final String TEXT_12 = "final ";
protected final String TEXT_13 = "class ";
protected final String TEXT_14 = " extends ";
protected final String TEXT_15 = " implements ";
protected final String TEXT_16 = ", ";
protected final String TEXT_17 = " {";
protected final String TEXT_18 = NL + NL + " /**" + NL + " * Default constructor. " + NL + " */" + NL + " public ";
protected final String TEXT_19 = "() {" + NL + " }";
protected final String TEXT_20 = NL + " " + NL + " /**" + NL + " * @see ";
protected final String TEXT_21 = "#";
protected final String TEXT_22 = "(";
protected final String TEXT_23 = ")" + NL + " */" + NL + " public ";
protected final String TEXT_24 = "(";
protected final String TEXT_25 = ") {" + NL + " super(";
protected final String TEXT_26 = ");" + NL + " }";
protected final String TEXT_27 = NL + NL + "\t/**" + NL + " * @see ";
protected final String TEXT_28 = "#";
protected final String TEXT_29 = "(";
protected final String TEXT_30 = ")" + NL + " */" + NL + " public ";
protected final String TEXT_31 = " ";
protected final String TEXT_32 = "(";
protected final String TEXT_33 = ") {" + NL + " // TODO Auto-generated method stub";
protected final String TEXT_34 = NL + "\t\t\treturn ";
protected final String TEXT_35 = ";";
protected final String TEXT_36 = NL + " }";
protected final String TEXT_37 = NL;
protected final String TEXT_38 = NL + " public void init() {";
protected final String TEXT_39 = NL + " aboutTemplate = getInitParameter(\"about-";
protected final String TEXT_40 = "\");";
protected final String TEXT_41 = NL + " configTemplate = getInitParameter(\"config-";
protected final String TEXT_42 = "\");";
protected final String TEXT_43 = NL + " editDefaultsTemplate = getInitParameter(\"edit-defaults-";
protected final String TEXT_44 = "\");";
protected final String TEXT_45 = NL + " editGuestTemplate = getInitParameter(\"edit-guest-";
protected final String TEXT_46 = "\");";
protected final String TEXT_47 = NL + " previewTemplate = getInitParameter(\"preview-";
protected final String TEXT_48 = "\");";
protected final String TEXT_49 = NL + " printTemplate = getInitParameter(\"print-";
protected final String TEXT_50 = "\");";
protected final String TEXT_51 = NL + " editTemplate = getInitParameter(\"edit-";
protected final String TEXT_52 = "\");";
protected final String TEXT_53 = NL + " helpTemplate = getInitParameter(\"help-";
protected final String TEXT_54 = "\");";
protected final String TEXT_55 = NL + " viewTemplate = getInitParameter(\"view-";
protected final String TEXT_56 = "\");";
protected final String TEXT_57 = NL + " }";
protected final String TEXT_58 = NL + " public void init() {";
protected final String TEXT_59 = NL + " editTemplate = getInitParameter(\"edit-";
protected final String TEXT_60 = "\");";
protected final String TEXT_61 = NL + " helpTemplate = getInitParameter(\"help-";
protected final String TEXT_62 = "\");";
protected final String TEXT_63 = NL + " viewTemplate = getInitParameter(\"view-";
protected final String TEXT_64 = "\");";
protected final String TEXT_65 = NL + " }";
protected final String TEXT_66 = NL + NL + " public void destroy() {" + NL + " super.destroy();" + NL + " }";
protected final String TEXT_67 = NL + NL + " public void processAction(" + NL + " ActionRequest actionRequest, ActionResponse actionResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.processAction(actionRequest, actionResponse);" + NL + " }";
protected final String TEXT_68 = NL + NL + " public void serveResource(" + NL + " ResourceRequest request, ResourceResponse response)" + NL + " throws PortletException, IOException {" + NL + "" + NL + " super.serveResource(request, response);" + NL + " }";
protected final String TEXT_69 = NL + NL + " public void doAbout(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + " " + NL + " super.doAbout(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_70 = NL + NL + " public void doConfig(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doConfig(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_71 = NL + " " + NL + " public void doEdit(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doEdit(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_72 = NL + " " + NL + " public void doEditDefaults(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doEditDefaults(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_73 = NL + " " + NL + " public void doEditGuest(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + " " + NL + " super.doEditGuest(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_74 = NL + " " + NL + " public void doHelp(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doHelp(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_75 = NL + NL + " public void doPreview(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doPreview(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_76 = NL + NL + " public void doPrint(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doPrint(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_77 = NL + " " + NL + " public void doView(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " super.doView(renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_78 = NL + NL + " public void doAbout(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(aboutTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_79 = NL + NL + " public void doConfig(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(configTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_80 = NL + NL + " public void doEdit(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(editTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_81 = NL + NL + " public void doEditDefaults(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " if (renderRequest.getPreferences() == null) {" + NL + " super.doEdit(renderRequest, renderResponse);" + NL + " }" + NL + " else {" + NL + " include(editDefaultsTemplate, renderRequest, renderResponse);" + NL + " }" + NL + " }";
protected final String TEXT_82 = NL + NL + "\tpublic void doEditGuest(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " if (renderRequest.getPreferences() == null) {" + NL + " super.doEdit(renderRequest, renderResponse);" + NL + " }" + NL + " else {" + NL + " include(editGuestTemplate, renderRequest, renderResponse);" + NL + " }" + NL + " }";
protected final String TEXT_83 = NL + NL + " public void doHelp(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(helpTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_84 = NL + NL + " public void doPreview(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(previewTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_85 = NL + NL + " public void doPrint(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(printTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_86 = NL + NL + " public void doView(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(viewTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_87 = NL + NL + " public void doEdit(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(editTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_88 = NL + NL + " public void doHelp(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(helpTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_89 = NL + NL + " public void doView(" + NL + " RenderRequest renderRequest, RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " include(viewTemplate, renderRequest, renderResponse);" + NL + " }";
protected final String TEXT_90 = NL + NL + " protected void include(" + NL + " String path, RenderRequest renderRequest," + NL + " RenderResponse renderResponse)" + NL + " throws IOException, PortletException {" + NL + "" + NL + " PortletRequestDispatcher portletRequestDispatcher =" + NL + " getPortletContext().getRequestDispatcher(path);" + NL + "" + NL + " if (portletRequestDispatcher == null) {" + NL + " _log.error(path + \" is not a valid include\");" + NL + " }" + NL + " else {" + NL + " portletRequestDispatcher.include(renderRequest, renderResponse);" + NL + " }" + NL + " }" + NL;
protected final String TEXT_91 = NL + " protected String aboutTemplate;";
protected final String TEXT_92 = NL + " protected String configTemplate;";
protected final String TEXT_93 = NL + " protected String editDefaultsTemplate;";
protected final String TEXT_94 = NL + " protected String editGuestTemplate;";
protected final String TEXT_95 = NL + " protected String previewTemplate;";
protected final String TEXT_96 = NL + " protected String printTemplate;";
protected final String TEXT_97 = " ";
protected final String TEXT_98 = NL + " protected String editTemplate;";
protected final String TEXT_99 = NL + " protected String helpTemplate;";
protected final String TEXT_100 = NL + " protected String viewTemplate;";
protected final String TEXT_101 = NL + NL + " private static Log _log = LogFactoryUtil.getLog(";
protected final String TEXT_102 = ".class);";
protected final String TEXT_103 = NL + NL + "}";
protected final String TEXT_104 = NL;
public String generate(Object argument)
{
final StringBuffer stringBuffer = new StringBuffer();
CreatePortletTemplateModel model = (CreatePortletTemplateModel) argument;
model.removeFlags(CreateJavaEEArtifactTemplateModel.FLAG_QUALIFIED_SUPERCLASS_NAME);
if (model.getJavaPackageName() != null && model.getJavaPackageName().length() > 0) {
stringBuffer.append(TEXT_1);
stringBuffer.append( model.getJavaPackageName() );
stringBuffer.append(TEXT_2);
}
stringBuffer.append(TEXT_3);
Collection<String> imports = model.getImports();
for (String anImport : imports) {
stringBuffer.append(TEXT_4);
stringBuffer.append( anImport );
stringBuffer.append(TEXT_5);
}
stringBuffer.append(TEXT_6);
stringBuffer.append(TEXT_7);
stringBuffer.append(TEXT_8);
stringBuffer.append( model.getClassName() );
stringBuffer.append(TEXT_9);
if (model.isPublic()) {
stringBuffer.append(TEXT_10);
}
if (model.isAbstract()) {
stringBuffer.append(TEXT_11);
}
if (model.isFinal()) {
stringBuffer.append(TEXT_12);
}
stringBuffer.append(TEXT_13);
stringBuffer.append( model.getClassName() );
String superClass = model.getSuperclassName();
if (superClass != null && superClass.length() > 0) {
stringBuffer.append(TEXT_14);
stringBuffer.append( superClass );
}
List<String> interfaces = model.getInterfaces();
if ( interfaces.size() > 0) {
stringBuffer.append(TEXT_15);
}
for (int i = 0; i < interfaces.size(); i++) {
String INTERFACE = (String) interfaces.get(i);
if (i > 0) {
stringBuffer.append(TEXT_16);
}
stringBuffer.append( INTERFACE );
}
stringBuffer.append(TEXT_17);
if (!model.hasEmptySuperclassConstructor()) {
stringBuffer.append(TEXT_18);
stringBuffer.append( model.getClassName() );
stringBuffer.append(TEXT_19);
}
if (model.shouldGenSuperclassConstructors()) {
List<Constructor> constructors = model.getConstructors();
for (Constructor constructor : constructors) {
if (constructor.isPublic() || constructor.isProtected()) {
stringBuffer.append(TEXT_20);
stringBuffer.append( model.getSuperclassName() );
stringBuffer.append(TEXT_21);
stringBuffer.append( model.getSuperclassName() );
stringBuffer.append(TEXT_22);
stringBuffer.append( constructor.getParamsForJavadoc() );
stringBuffer.append(TEXT_23);
stringBuffer.append( model.getClassName() );
stringBuffer.append(TEXT_24);
stringBuffer.append( constructor.getParamsForDeclaration() );
stringBuffer.append(TEXT_25);
stringBuffer.append( constructor.getParamsForCall() );
stringBuffer.append(TEXT_26);
}
}
}
if (model.shouldImplementAbstractMethods()) {
for (Method method : model.getUnimplementedMethods()) {
stringBuffer.append(TEXT_27);
stringBuffer.append( method.getContainingJavaClass() );
stringBuffer.append(TEXT_28);
stringBuffer.append( method.getName() );
stringBuffer.append(TEXT_29);
stringBuffer.append( method.getParamsForJavadoc() );
stringBuffer.append(TEXT_30);
stringBuffer.append( method.getReturnType() );
stringBuffer.append(TEXT_31);
stringBuffer.append( method.getName() );
stringBuffer.append(TEXT_32);
stringBuffer.append( method.getParamsForDeclaration() );
stringBuffer.append(TEXT_33);
String defaultReturnValue = method.getDefaultReturnValue();
if (defaultReturnValue != null) {
stringBuffer.append(TEXT_34);
stringBuffer.append( defaultReturnValue );
stringBuffer.append(TEXT_35);
}
stringBuffer.append(TEXT_36);
}
}
stringBuffer.append(TEXT_37);
if (model.shouldGenerateOverride(INIT_OVERRIDE) && model.isLiferayPortletSuperclass()) {
stringBuffer.append(TEXT_38);
if (model.hasPortletMode(ABOUT_MODE)) {
stringBuffer.append(TEXT_39);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_40);
}
if (model.hasPortletMode(CONFIG_MODE)) {
stringBuffer.append(TEXT_41);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_42);
}
if (model.hasPortletMode(EDITDEFAULTS_MODE)) {
stringBuffer.append(TEXT_43);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_44);
}
if (model.hasPortletMode(EDITGUEST_MODE)) {
stringBuffer.append(TEXT_45);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_46);
}
if (model.hasPortletMode(PREVIEW_MODE)) {
stringBuffer.append(TEXT_47);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_48);
}
if (model.hasPortletMode(PRINT_MODE)) {
stringBuffer.append(TEXT_49);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_50);
}
if (model.hasPortletMode(EDIT_MODE)) {
stringBuffer.append(TEXT_51);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_52);
}
if (model.hasPortletMode(HELP_MODE)) {
stringBuffer.append(TEXT_53);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_54);
}
if (model.hasPortletMode(VIEW_MODE)) {
stringBuffer.append(TEXT_55);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_56);
}
stringBuffer.append(TEXT_57);
} else if (model.shouldGenerateOverride(INIT_OVERRIDE) && !model.isMVCPortletSuperclass()) {
stringBuffer.append(TEXT_58);
if (model.hasPortletMode(EDIT_MODE)) {
stringBuffer.append(TEXT_59);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_60);
}
if (model.hasPortletMode(HELP_MODE)) {
stringBuffer.append(TEXT_61);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_62);
}
if (model.hasPortletMode(VIEW_MODE)) {
stringBuffer.append(TEXT_63);
stringBuffer.append(model.getInitParameterName());
stringBuffer.append(TEXT_64);
}
stringBuffer.append(TEXT_65);
}
if (model.shouldGenerateOverride(DESTROY_OVERRIDE)) {
stringBuffer.append(TEXT_66);
}
if (model.shouldGenerateOverride(PROCESSACTION_OVERRIDE)) {
stringBuffer.append(TEXT_67);
}
if (model.shouldGenerateOverride(SERVERESOURCE_OVERRIDE)) {
stringBuffer.append(TEXT_68);
}
if (model.isMVCPortletSuperclass()) {
if (model.shouldGenerateOverride(DOABOUT_OVERRIDE)) {
stringBuffer.append(TEXT_69);
} else if (model.shouldGenerateOverride(DOCONFIG_OVERRIDE)) {
stringBuffer.append(TEXT_70);
} else if (model.shouldGenerateOverride(DOEDIT_OVERRIDE)) {
stringBuffer.append(TEXT_71);
} else if (model.shouldGenerateOverride(DOEDITDEFAULTS_OVERRIDE)) {
stringBuffer.append(TEXT_72);
} else if (model.shouldGenerateOverride(DOEDITGUEST_OVERRIDE)) {
stringBuffer.append(TEXT_73);
} else if (model.shouldGenerateOverride(DOHELP_OVERRIDE)) {
stringBuffer.append(TEXT_74);
} else if (model.shouldGenerateOverride(DOPREVIEW_OVERRIDE)) {
stringBuffer.append(TEXT_75);
} else if (model.shouldGenerateOverride(DOPRINT_OVERRIDE)) {
stringBuffer.append(TEXT_76);
} else if (model.shouldGenerateOverride(DOVIEW_OVERRIDE)) {
stringBuffer.append(TEXT_77);
}
} else if (model.isLiferayPortletSuperclass()) {
if (model.hasPortletMode(ABOUT_MODE)) {
stringBuffer.append(TEXT_78);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(CONFIG_MODE)) {
stringBuffer.append(TEXT_79);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(EDIT_MODE)) {
stringBuffer.append(TEXT_80);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(EDITDEFAULTS_MODE)) {
stringBuffer.append(TEXT_81);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(EDITGUEST_MODE)) {
stringBuffer.append(TEXT_82);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(HELP_MODE)) {
stringBuffer.append(TEXT_83);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(PREVIEW_MODE)) {
stringBuffer.append(TEXT_84);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(PRINT_MODE)) {
stringBuffer.append(TEXT_85);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(VIEW_MODE)) {
stringBuffer.append(TEXT_86);
model.setGenerateGenericInclude(true);
}
} else if (model.isGenericPortletSuperclass()) {
if (model.hasPortletMode(EDIT_MODE)) {
stringBuffer.append(TEXT_87);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(HELP_MODE)) {
stringBuffer.append(TEXT_88);
model.setGenerateGenericInclude(true);
}
if (model.hasPortletMode(VIEW_MODE)) {
stringBuffer.append(TEXT_89);
model.setGenerateGenericInclude(true);
}
}
if (model.shouldGenerateGenericInclude()) {
stringBuffer.append(TEXT_90);
}
if (model.isLiferayPortletSuperclass()) {
if (model.hasPortletMode(ABOUT_MODE)) {
stringBuffer.append(TEXT_91);
}
if (model.hasPortletMode(CONFIG_MODE)) {
stringBuffer.append(TEXT_92);
}
if (model.hasPortletMode(EDITDEFAULTS_MODE)) {
stringBuffer.append(TEXT_93);
}
if (model.hasPortletMode(EDITGUEST_MODE)) {
stringBuffer.append(TEXT_94);
}
if (model.hasPortletMode(PREVIEW_MODE)) {
stringBuffer.append(TEXT_95);
}
if (model.hasPortletMode(PRINT_MODE)) {
stringBuffer.append(TEXT_96);
}
}
stringBuffer.append(TEXT_97);
if (!model.isMVCPortletSuperclass()) {
if (model.hasPortletMode(EDIT_MODE)) {
stringBuffer.append(TEXT_98);
}
if (model.hasPortletMode(HELP_MODE)) {
stringBuffer.append(TEXT_99);
}
if (model.hasPortletMode(VIEW_MODE)) {
stringBuffer.append(TEXT_100);
}
}
if (model.shouldGenerateGenericInclude()) {
stringBuffer.append(TEXT_101);
stringBuffer.append(model.getClassName());
stringBuffer.append(TEXT_102);
}
stringBuffer.append(TEXT_103);
stringBuffer.append(TEXT_104);
return stringBuffer.toString();
}
}