Package org.springframework.roo.classpath.converters

Source Code of org.springframework.roo.classpath.converters.LastUsedImpl

package org.springframework.roo.classpath.converters;

import static org.springframework.roo.classpath.converters.JavaPackageConverter.TOP_LEVEL_PACKAGE_SYMBOL;
import static org.springframework.roo.project.LogicalPath.MODULE_PATH_SEPARATOR;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.springframework.roo.classpath.TypeLocationService;
import org.springframework.roo.model.JavaPackage;
import org.springframework.roo.model.JavaType;
import org.springframework.roo.project.ProjectOperations;
import org.springframework.roo.project.maven.Pom;
import org.springframework.roo.shell.Shell;
import org.springframework.roo.support.util.AnsiEscapeCode;

/**
* Records the last Java package and type used.
*
* @author Ben Alex
* @since 1.0
*/
@Component
@Service
public class LastUsedImpl implements LastUsed {

    private JavaPackage topLevelPackage;
    private JavaPackage javaPackage;
    private JavaType javaType;
    private Pom module;

    @Reference private ProjectOperations projectOperations;
    @Reference private Shell shell;
    @Reference private TypeLocationService typeLocationService;

    public JavaPackage getJavaPackage() {
        return javaPackage;
    }

    public JavaType getJavaType() {
        return javaType;
    }

    public JavaPackage getTopLevelPackage() {
        return topLevelPackage;
    }

    public void setPackage(final JavaPackage javaPackage) {
        Validate.notNull(javaPackage, "JavaPackage required");
        if (javaPackage.getFullyQualifiedPackageName().startsWith("java.")) {
            return;
        }
        javaType = null;
        this.javaPackage = javaPackage;
        setPromptPath(javaPackage.getFullyQualifiedPackageName());
    }

    private void setPromptPath(final String fullyQualifiedName) {
        if (topLevelPackage == null) {
            return;
        }

        String moduleName = "";
        if (module != null && StringUtils.isNotBlank(module.getModuleName())) {
            moduleName = AnsiEscapeCode.decorate(module.getModuleName()
                    + MODULE_PATH_SEPARATOR, AnsiEscapeCode.FG_CYAN);
        }

        topLevelPackage = new JavaPackage(
                typeLocationService
                        .getTopLevelPackageForModule(projectOperations
                                .getFocusedModule()));
        final String path = moduleName
                + fullyQualifiedName.replace(
                        topLevelPackage.getFullyQualifiedPackageName(),
                        TOP_LEVEL_PACKAGE_SYMBOL);
        shell.setPromptPath(path, StringUtils.isNotBlank(moduleName));
    }

    public void setTopLevelPackage(final JavaPackage topLevelPackage) {
        this.topLevelPackage = topLevelPackage;
    }

    public void setType(final JavaType javaType) {
        Validate.notNull(javaType, "JavaType required");
        if (javaType.getPackage().getFullyQualifiedPackageName()
                .startsWith("java.")) {
            return;
        }
        this.javaType = javaType;
        javaPackage = javaType.getPackage();
        setPromptPath(javaType.getFullyQualifiedTypeName());
    }

    public void setType(final JavaType javaType, final Pom module) {
        Validate.notNull(javaType, "JavaType required");
        if (javaType.getPackage().getFullyQualifiedPackageName()
                .startsWith("java.")) {
            return;
        }
        this.module = module;
        this.javaType = javaType;
        javaPackage = javaType.getPackage();
        setPromptPath(javaType.getFullyQualifiedTypeName());
    }
}
TOP

Related Classes of org.springframework.roo.classpath.converters.LastUsedImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.