/******************************************************************************* * Copyright (c) 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.jsdt.internal.ui.text.javadoc; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import org.eclipse.wst.jsdt.core.IMember; import org.eclipse.wst.jsdt.internal.core.MetadataFile; import org.eclipse.wst.jsdt.internal.oaametadata.DocumentedElement; import org.eclipse.wst.jsdt.internal.oaametadata.Exception; import org.eclipse.wst.jsdt.internal.oaametadata.Method; import org.eclipse.wst.jsdt.internal.oaametadata.Parameter; import org.eclipse.wst.jsdt.internal.oaametadata.VersionableElement; public class OAADocReader extends Reader { StringReader sr; StringBuffer buffer = new StringBuffer(); public OAADocReader(MetadataFile openable, IMember member) { getDoc(openable, member); } private void getDoc(MetadataFile openable, IMember member) { DocumentedElement documentation = openable.getDocumentation(member); VersionableElement versionableElement = (documentation instanceof VersionableElement) ? (VersionableElement) documentation : null; Method method = (documentation instanceof Method) ? (Method) documentation : null; if (documentation != null) { if (documentation.description != null) { buffer.append("<p>"); //$NON-NLS-1$ buffer.append(documentation.description); buffer.append("</p>"); //$NON-NLS-1$ } if (method!=null) printMethod(method); } buffer.append("</dl>"); //$NON-NLS-1$ sr = new StringReader(buffer.toString()); } private void printMethod(Method method) { buffer.append("<dl>"); //$NON-NLS-1$ if ( method.parameters != null && method.parameters.length > 0) { printSectionHead(JavaDocMessages.JavaDoc2HTMLTextReader_parameters_section); for (int i = 0; i < method.parameters.length; i++) { Parameter parameter = method.parameters[i]; buffer.append("<dd>"); //$NON-NLS-1$ buffer.append("<b>").append(parameter.name).append("</b> "); //$NON-NLS-1$ //$NON-NLS-2$ if (parameter.description!=null) buffer.append(parameter.description); buffer.append("</dd>"); //$NON-NLS-1$ } } if (method.returns != null) printSection( JavaDocMessages.JavaDoc2HTMLTextReader_returns_section, method.returns.dataType, method.returns.description); if ( method.exceptions != null && method.exceptions.length > 0) { printSectionHead(JavaDocMessages.JavaDoc2HTMLTextReader_throws_section); for (int i = 0; i < method.exceptions.length; i++) { Exception exception = method.exceptions[i]; buffer.append("<dd>"); //$NON-NLS-1$ buffer.append(exception.description); //$NON-NLS-1$ buffer.append("</dd>"); //$NON-NLS-1$ } } } public void close() throws IOException { sr.close(); } public int read(char[] cbuf, int off, int len) throws IOException { return sr.read(cbuf, off, len); } private void printSectionHead(String tag) { buffer.append("<dt>"); //$NON-NLS-1$ buffer.append(tag); buffer.append("</dt>"); //$NON-NLS-1$ } private void printSection(String tag, String nameIn, String descriptionIn) { String name = (nameIn != null && nameIn.length() > 0) ? nameIn : null; String description = (descriptionIn != null && descriptionIn.length() > 0) ? descriptionIn : null; if (name != null || description != null) { buffer.append("<dt>"); //$NON-NLS-1$ buffer.append(tag); buffer.append("<dd>"); //$NON-NLS-1$ if (name != null) buffer.append("<b>").append(name).append("</b>"); //$NON-NLS-1$ //$NON-NLS-2$ if (description != null) buffer.append(description); buffer.append("</dd>"); //$NON-NLS-1$ buffer.append("</dt>"); //$NON-NLS-1$ } } }