/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.jdt.core.search;
import org.eclipse.che.ide.ext.java.jdt.core.IJavaElement;
import org.eclipse.che.ide.ext.java.jdt.core.IPackageFragment;
import org.eclipse.che.ide.ext.java.jdt.core.IType;
import org.eclipse.che.ide.ext.java.jdt.core.Signature;
import org.eclipse.che.ide.ext.java.jdt.core.compiler.CharOperation;
import org.eclipse.che.ide.ext.java.jdt.env.PackageFragment;
import org.eclipse.che.ide.ext.java.worker.env.BinaryType;
/**
* @author <a href="mailto:evidolob@exoplatform.com">Evgen Vidolob</a>
* @version $Id:
*/
public class Type implements IType {
private BinaryType typeInfo;
private PackageFragment packageFragment;
private String name;
/** @param typeInfo */
public Type(BinaryType typeInfo) {
this.typeInfo = typeInfo;
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IJavaElement#getElementName() */
@Override
public String getElementName() {
if (name == null) {
char[][] chars = CharOperation.splitOn('/', typeInfo.getName());
name = new String(Signature.getSimpleName(Signature.toQualifiedName(chars)));
if (name.contains("."))
name = name.substring(name.lastIndexOf('.'));
}
return name;
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IJavaElement#getElementType() */
@Override
public int getElementType() {
return IJavaElement.TYPE;
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IType#getFlags() */
@Override
public int getFlags() {
return typeInfo.getModifiers();
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IType#getFullyQualifiedName() */
@Override
public String getFullyQualifiedName() {
return getElementName();
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IType#getFullyQualifiedName(char) */
@Override
public String getFullyQualifiedName(char c) {
return getFullyQualifiedName();
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IType#getTypeQualifiedName(char) */
@Override
public String getTypeQualifiedName(char c) {
return getFullyQualifiedName();
}
/** @see org.eclipse.che.ide.ext.java.jdt.core.IType#getPackageFragment() */
@Override
public IPackageFragment getPackageFragment() {
if (packageFragment == null)
packageFragment = new PackageFragment(getFullyQualifiedName());
return packageFragment;
}
}