/*******************************************************************************
* Copyright (c) 2006 Zend Corporation and IBM Corporation.
* 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:
* Zend and IBM - Initial implementation
*******************************************************************************/
package org2.eclipse.php.internal.core.documentModel.phpElementData;
import java.util.HashMap;
@SuppressWarnings( { "unchecked", "nls", "rawtypes" })
public class BasicPHPDocTag implements IPHPDocTag
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String value;
private static HashMap nameToID;
public BasicPHPDocTag(int id, String value)
{
this.id = id;
this.value = value;
}
public int getID()
{
return id;
}
/**
* This one returns -1 on every call.
*/
public int getTagKind()
{
return -1;
}
public String getValue()
{
return value;
}
public static String getName(int id)
{
switch (id)
{
case ABSTRACT:
return "abstract";
case AUTHOR:
return "author";
case ACCESS:
return "access";
case CATEGORY:
return "category";
case COPYRIGHT:
return "copyright";
case DEPRECATED:
return "deprecated";
case EXAMPLE:
return "example";
case FINAL:
return "final";
case FILESOURCE:
return "filesource";
case GLOBAL:
return "global";
case IGNORE:
return "ignore";
case INTERNAL:
return "internal";
case LICENSE:
return "license";
case LINK:
return "link";
case NAME:
return "name";
case RETURN:
return "return";
case PACKAGE:
return "package";
case PARAM:
return "param";
case SEE:
return "see";
case SINCE:
return "since";
case STATIC:
return "static";
case STATICVAR:
return "staticvar";
case SUBPACKAGE:
return "subpackage";
case THROWS:
return "throws";
case TODO:
return "todo";
case TUTORIAL:
return "tutorial";
case USES:
return "uses";
case VAR:
return "var";
case VERSION:
return "version";
case DESC:
return "desc";
}
return "";
}
public static int getID(String name)
{
Integer rv = (Integer) getNameToID().get(name);
if (rv == null)
{
return -1;
}
return rv.intValue();
}
private static HashMap getNameToID()
{
if (nameToID == null)
{
nameToID = new HashMap();
nameToID.put("abstract", new Integer(ABSTRACT));
nameToID.put("access", new Integer(ACCESS));
nameToID.put("author", new Integer(AUTHOR));
nameToID.put("category", new Integer(CATEGORY));
nameToID.put("copyright", new Integer(COPYRIGHT));
nameToID.put("deprecated", new Integer(DEPRECATED));
nameToID.put("desc", new Integer(DESC));
nameToID.put("example", new Integer(EXAMPLE));
nameToID.put("final", new Integer(FINAL));
nameToID.put("filesource", new Integer(FILESOURCE));
nameToID.put("global", new Integer(GLOBAL));
nameToID.put("ignore", new Integer(IGNORE));
nameToID.put("internal", new Integer(INTERNAL));
nameToID.put("license", new Integer(LICENSE));
nameToID.put("link", new Integer(LINK));
nameToID.put("name", new Integer(NAME));
nameToID.put("return", new Integer(RETURN));
nameToID.put("package", new Integer(PACKAGE));
nameToID.put("param", new Integer(PARAM));
nameToID.put("see", new Integer(SEE));
nameToID.put("since", new Integer(SINCE));
nameToID.put("static", new Integer(STATIC));
nameToID.put("staticvar", new Integer(STATICVAR));
nameToID.put("subpackage", new Integer(SUBPACKAGE));
nameToID.put("throws", new Integer(THROWS));
nameToID.put("todo", new Integer(TODO));
nameToID.put("tutorial", new Integer(TUTORIAL));
nameToID.put("uses", new Integer(USES));
nameToID.put("var", new Integer(VAR));
nameToID.put("version", new Integer(VERSION));
}
return nameToID;
}
public String toString()
{
StringBuffer b = new StringBuffer("@");
b.append("<b>" + getName(getID()) + "</b>");
b.append(" ");
if (getValue() != null)
{
b.append(getValue().toString());
}
return b.toString();
}
/**
* Create a document-model doc tag from a give AST doc tag type. <br>
* [Note: Aptana Addition]
*
* @param docTag
* An AST IPHPDocTag (can be null).
* @return A IPHPDocTag; Null if the given docTag was null, or there is no matching doc type.
*/
public static IPHPDocTag fromASTDocTag(IPHPDocTag docTag)
{
if (docTag == null)
{
return null;
}
String tagKind = org2.eclipse.php.internal.core.compiler.ast.nodes.PHPDocTag.getTagKind(docTag.getTagKind());
int thisId = getID(tagKind);
if (thisId == -1)
{
// There is no matching model doc tag
return null;
}
return new BasicPHPDocTag(thisId, docTag.getValue());
}
}