Мне нужно проверить наличие определенного файла в проекте Xtext. Файл имеет тот же путь, что и проверенный объект, но другой корневой каталог, например:
$projPath/src/dir1/dir2/ValidatedFile.src
$projPath/resources/dir1/dir2/SchoudBeExistFile.src
В функции проверки я получаю ресурс только с относительным путем (/src/dir1/dir2/ValidatedFile.src
). Но я не знаю путь к проекту, поэтому не могу проверить наличие файла /resources/dir1/dir2/SchoudBeExistFile.src
.
Можете ли вы помочь мне найти абсолютный путь к проекту в функции проверки?
@Check
def checkExternalFileExistance(MyType my) {
val myTypeFullPath = ??
val projectPath = ??
}
Спасибо
ОБНОВЛЕНИЕ: Решено добавлением зависимостей плагинов org.eclipse.core.resources
и org.eclipse.core.runtime
в проект xtext через plugin.xml
и использованием это решение в стиле грамматики. Для этого не требуется абсолютный путь.
@Check
def checkExternalFlowDirExistance(MyType my) {
val platformString = my.eResource.URI.toPlatformString(true);
val myFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformString));
val proj = myFile.getProject();
val shouldExistsFile = proj.geFile("/resources/dir1/dir2/SchoudBeExistFile.src")
if (!shouldExistsFile.exists) {
// error
}
}