/******************************************************************************* * Copyright (c) 2007 Remy Suen 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: * Remy Suen <remy.suen@gmail.com> - initial API and implementation ******************************************************************************/ package org.eclipse.ecf.internal.presence.bot.kosmos; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import org.eclipse.osgi.util.NLS; class JavadocAnalyzer { private final Map javadocs = new HashMap(); JavadocAnalyzer() { try { initialize(); } catch (IOException e) { // ignored e.printStackTrace(System.err); } catch (RuntimeException e) { e.printStackTrace(System.err); System.exit(0); } } private void initialize() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader( JavadocAnalyzer.class.getResourceAsStream("javadoc.txt"))); String input = reader.readLine(); while (input != null) { String className = input.substring(input.lastIndexOf('.') + 1); Object o = javadocs.get(className); Javadoc doc = new Javadoc(javadocs, input); if (o != null) { if (o instanceof Javadoc) { Javadoc[] docs = new Javadoc[2]; docs[0] = (Javadoc) o; docs[1] = doc; javadocs.put(className, docs); } else { Javadoc[] docs = (Javadoc[]) o; Javadoc[] copy = new Javadoc[docs.length + 1]; System.arraycopy(docs, 0, copy, 0, docs.length); copy[docs.length] = doc; javadocs.put(className, copy); } } else { javadocs.put(className, doc); } javadocs.put(input, doc); input = reader.readLine(); } reader.close(); } String getJavadocs(String className) { Object docs = javadocs.get(className); if (docs == null) { return NLS.bind(CustomMessages .getString(CustomMessages.Javadoc_NotFound), className); } else if (docs instanceof Javadoc) { return ((Javadoc) docs).getDefault(); } else { Javadoc[] array = (Javadoc[]) docs; String reply = ""; //$NON-NLS-1$ for (int i = 0; i < array.length; i++) { reply += array[i].getDefault() + " "; //$NON-NLS-1$ } reply = reply.substring(0, reply.length() - 1); return reply; } } String getJavadocs(String className, String field) { Object docs = javadocs.get(className); if (docs == null) { return NLS.bind(CustomMessages .getString(CustomMessages.Javadoc_NotFound), className); } else if (docs instanceof Javadoc) { return ((Javadoc) docs).getField(field); } else { Javadoc[] array = (Javadoc[]) docs; String reply = ""; //$NON-NLS-1$ for (int i = 0; i < array.length; i++) { reply += array[i].getField(field) + " "; //$NON-NLS-1$ } reply = reply.substring(0, reply.length() - 1); return reply; } } String getJavadocs(String className, String methodName, String[] parameters) { Object docs = javadocs.get(className); if (docs == null) { return NLS.bind(CustomMessages .getString(CustomMessages.Javadoc_NotFound), className); } else if (docs instanceof Javadoc) { String javadocs = ((Javadoc) docs) .getMethod(methodName, parameters); if (javadocs == null) { return CustomMessages.getString(CustomMessages.Javadoc_ResultsUnknown); } else { return javadocs; } } else { Javadoc[] array = (Javadoc[]) docs; String reply = ""; //$NON-NLS-1$ for (int i = 0; i < array.length; i++) { String ret = array[i].getMethod(methodName, parameters); if (ret != null) { reply = reply + ret + " "; //$NON-NLS-1$ } } reply = reply.substring(0, reply.length() - 1); return reply; } } }