/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.lang.psi.stubs; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.stubs.PsiFileStubImpl; import com.intellij.psi.tree.IStubFileElementType; import com.intellij.util.io.StringRef; import gw.plugin.ij.lang.parser.GosuCodeParserDefinition; import gw.plugin.ij.lang.psi.IGosuFile; import gw.plugin.ij.lang.psi.impl.AbstractGosuClassFileImpl; import org.jetbrains.annotations.NotNull; public class GosuFileStub extends PsiFileStubImpl<IGosuFile> { private StringRef _packageName; private StringRef _name; private StringRef _ext; public GosuFileStub(IGosuFile file) { super(file); } public GosuFileStub(StringRef packName, StringRef name, StringRef ext) { super(null); _packageName = packName; _name = name; _ext = ext; } @NotNull public IStubFileElementType getType() { return GosuCodeParserDefinition.GOSU_FILE; } public StringRef getPackageName() { if (_packageName == null) { _packageName = StringRef.fromString(getPsi().getPackageName()); } return _packageName; } public StringRef getName() { if (_name == null) { _name = StringRef.fromString(StringUtil.trimEnd(getPsi().getName(), "." + getExt().getString())); } return _name; } @NotNull public String getTypeName() { return getPackageName().getString() + '.' + getName().getString(); } public StringRef getExt() { if (_ext == null) { _ext = StringRef.fromString(((AbstractGosuClassFileImpl) getPsi()).getFileExtension()); } return _ext; } }