package spdxedit.io; import com.google.common.collect.ImmutableList; import org.spdx.rdfparser.InvalidSPDXAnalysisException; import org.spdx.rdfparser.model.SpdxDocument; import java.io.File; import java.io.IOException; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; /** * Created by ybronshteyn on 1/29/17. */ public enum FileDataType { RDF_XML("RDF-XML", FileIoLogic::writeRdfXml, FileIoLogic::loadRdfXml, "rdf", "spdx"), TAG("Tag:Value", FileIoLogic::writeTagValue, FileIoLogic::loadTagValue, "spdx"), TURTLE("RDF-Turtle", FileIoLogic::writeTurtle, FileIoLogic::readTurtle, "ttl", "turtle", "spdx"), JSON_LD("JSON-LD", FileIoLogic::writeJsonLd, FileIoLogic::readJsonLd, "json"), RDF_JSON("RDF-JSON", FileIoLogic::writeRdfJson, FileIoLogic::readRdfJson, "json"); /* JSONLD("JSON-LD", "json"), RDF_JSON("RDF/JSON", "json")*/; private final String displayName; private final List<String> extensions; private final FileOutputStrategy fileOutputLogic; private final FileInputStrategy fileInputLogic; FileDataType(String displayName, FileOutputStrategy fileOutputLogic, FileInputStrategy fileInputLogic, String... extensions) { this.displayName = displayName; this.extensions = ImmutableList.copyOf(extensions); this.fileInputLogic = fileInputLogic; this.fileOutputLogic = fileOutputLogic; } public List<String> getExtensions() { return extensions; } public String getDisplayName() { return displayName; } public void writeToFile(File file, SpdxDocument document) throws IOException { fileOutputLogic.write(file, document); } public SpdxDocument readFromFile(File file) throws IOException, InvalidSPDXAnalysisException { return fileInputLogic.read(file); } @Override public String toString() { return getDisplayName(); } }