001/* 002 * SPDX-License-Identifier: Apache-2.0 003 * 004 * Copyright 2023-2026 The Enola <https://enola.dev> Authors 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * https://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package dev.enola.cli; 019 020import com.google.common.net.MediaType; 021 022import dev.enola.common.protobuf.ProtobufMediaTypes; 023import dev.enola.rdf.io.RdfMediaTypes; 024import dev.enola.thing.gen.graphcommons.GraphCommonsMediaType; 025import dev.enola.thing.gen.graphviz.GraphvizMediaType; 026 027public enum Format { 028 Turtle, 029 030 JSONLD, 031 032 Graphviz, 033 034 GraphCommons, 035 036 TextProto, 037 038 ProtoYAML, 039 040 ProtoJSON, 041 042 BinaryPB; 043 044 MediaType toMediaType() { 045 return switch (this) { 046 case Turtle -> RdfMediaTypes.TURTLE; 047 case JSONLD -> RdfMediaTypes.JSON_LD; 048 case Graphviz -> GraphvizMediaType.GV; 049 case GraphCommons -> GraphCommonsMediaType.GCJSON; 050 051 case TextProto -> ProtobufMediaTypes.PROTOBUF_TEXTPROTO_UTF_8; 052 case ProtoYAML -> ProtobufMediaTypes.PROTOBUF_YAML_UTF_8; 053 case ProtoJSON -> ProtobufMediaTypes.PROTOBUF_JSON_UTF_8; 054 case BinaryPB -> ProtobufMediaTypes.PROTOBUF_BINARY; 055 }; 056 } 057}