org.projectusus.ui.internal.proportions.infopresenter.infomodel.UsusInfoBuilder.java Source code

Java tutorial

Introduction

Here is the source code for org.projectusus.ui.internal.proportions.infopresenter.infomodel.UsusInfoBuilder.java

Source

// Copyright (c) 2009-2010 by the projectusus.org contributors
// This software is released under the terms and conditions
// of the Eclipse Public License (EPL) 1.0.
// See http://www.eclipse.org/legal/epl-v10.html for details.
package org.projectusus.ui.internal.proportions.infopresenter.infomodel;

import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;

public class UsusInfoBuilder {

    public static IUsusInfo of(IJavaElement element) {
        try {
            IJavaElement currentElement = element;
            while (currentElement != null) {
                if (currentElement.getElementType() == IJavaElement.METHOD) {
                    return new UsusInfoForMethod((IMethod) currentElement);
                }
                if (currentElement.getElementType() == IJavaElement.TYPE) {
                    return new UsusInfoForClass((IType) currentElement);
                }
                if (currentElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    return new UsusInfoForFile(currentElement.getUnderlyingResource());
                }
                currentElement = currentElement.getParent();
            }
        } catch (JavaModelException e) {
            // do nothing
        }
        return new UnavailableUsusInfo(element);
    }

    private UsusInfoBuilder() {
        super();
    }
}