package io.lumify.core.ingest;
import io.lumify.core.model.properties.LumifyProperties;
import org.securegraph.VertexBuilder;
import org.securegraph.Visibility;
import org.securegraph.property.StreamingPropertyValue;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MetadataFileImportSupportingFileHandler extends FileImportSupportingFileHandler {
private static final String METADATA_JSON_FILE_NAME_SUFFIX = ".metadata.json";
@Override
public boolean isSupportingFile(File f) {
return f.getName().endsWith(METADATA_JSON_FILE_NAME_SUFFIX);
}
@Override
public AddSupportingFilesResult addSupportingFiles(VertexBuilder vertexBuilder, File f, Visibility visibility) throws FileNotFoundException {
File mappingJsonFile = getMetadataFile(f);
if (mappingJsonFile.exists()) {
final FileInputStream mappingJsonInputStream = new FileInputStream(mappingJsonFile);
StreamingPropertyValue mappingJsonValue = new StreamingPropertyValue(mappingJsonInputStream, byte[].class);
mappingJsonValue.searchIndex(false);
LumifyProperties.METADATA_JSON.setProperty(vertexBuilder, mappingJsonValue, visibility);
return new AddSupportingFilesResult() {
@Override
public void close() throws IOException {
mappingJsonInputStream.close();
}
};
}
return null;
}
public static File getMetadataFile(File f) {
return new File(f.getParentFile(), f.getName() + METADATA_JSON_FILE_NAME_SUFFIX);
}
}