001/* 002 * SPDX-License-Identifier: Apache-2.0 003 * 004 * Copyright 2024-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.rdf.io; 019 020import dev.enola.common.io.resource.ReadableResource; 021import dev.enola.common.io.resource.ResourceProvider; 022import dev.enola.common.io.resource.WritableResource; 023import dev.enola.common.io.resource.convert.CatchingResourceConverter; 024 025public class RdfResourceConverter implements CatchingResourceConverter { 026 027 // TODO Add missing tests for this this class (it may well not work as-is yet) 028 029 // TODO Add conversion to/from Thing (incl. "chaining" to Thing YAML/JSON/BinPB) 030 031 private final RdfReaderConverterInto reader; 032 033 public RdfResourceConverter(ResourceProvider resourceProvider) { 034 this.reader = new RdfReaderConverterInto(resourceProvider); 035 } 036 037 @Override 038 public boolean convertIntoThrows(ReadableResource from, WritableResource into) 039 throws Exception { 040 041 var opt = WritableResourceRDFHandler.create(into); 042 if (opt.isEmpty()) return false; 043 044 try (var handler = opt.get()) { 045 return reader.convertInto(from, handler); 046 } 047 } 048}