
com.buschmais.jqassistant.plugin.common.api.scanner.LocalFileSystemFileResolver Maven / Gradle / Ivy
package com.buschmais.jqassistant.plugin.common.api.scanner;
import java.util.HashMap;
import java.util.Map;
import com.buschmais.jqassistant.core.scanner.api.ScannerContext;
import com.buschmais.jqassistant.plugin.common.api.model.FileDescriptor;
import com.buschmais.xo.api.Query.Result;
/**
* File resolver for the local file system using absolute paths.
*
*/
public class LocalFileSystemFileResolver extends AbstractFileResolver {
public LocalFileSystemFileResolver() {
super(LocalFileSystemFileResolver.class.getName());
}
@Override
public D require(String requiredPath, String containedPath, Class type, ScannerContext context) {
return resolve(requiredPath, type, context);
}
@Override
public D match(String containedPath, Class type, ScannerContext context) {
return resolve(containedPath, type, context);
}
private D resolve(String requiredPath, Class type, ScannerContext context) {
return getOrCreateAs(requiredPath, type, s -> {
Map params = new HashMap<>();
params.put("fileName", s);
Result result = context.getStore().executeQuery("MATCH (file:File) WHERE file.fileName=$fileName RETURN file", params);
return result.hasResult() ? result.getSingleResult().get("file", FileDescriptor.class) : null;
}, context);
}
}