package org.sef4j.core.helpers.files;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ContentEnricherFileChangeEventTransformer implements Function<FileChangeEvent,ContentFileChangeEvent>{
private static final Logger LOG = LoggerFactory.getLogger(ContentEnricherFileChangeEventTransformer.class);
public static final ContentEnricherFileChangeEventTransformer INSTANCE = new ContentEnricherFileChangeEventTransformer();
// ------------------------------------------------------------------------
public ContentEnricherFileChangeEventTransformer() {
}
// ------------------------------------------------------------------------
@Override
public ContentFileChangeEvent apply(FileChangeEvent event) {
String filePathStr = event.getFilePath();
Path path = Paths.get(filePathStr);
byte[] content = safeLoadFileContent(path);
return new ContentFileChangeEvent(filePathStr, event.getEventKind(), content);
}
protected byte[] safeLoadFileContent(Path fileName) {
byte[] fileContent;
try {
fileContent = Files.readAllBytes(fileName);
} catch (IOException ex) {
LOG.warn("failed to read file " + fileName + ".. ignore, no rethrow!");
fileContent = null;
}
return fileContent;
}
}