ExtensibleStatementHelper.java

/*******************************************************************************
 * Copyright (c) 2020 Eclipse RDF4J contributors.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Distribution License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *******************************************************************************/
package org.eclipse.rdf4j.sail.extensiblestore.valuefactory;

import org.eclipse.rdf4j.model.Statement;

public interface ExtensibleStatementHelper {

	DefaultExtensibleStatementHelper defaultExtensibleStatementHelper = new DefaultExtensibleStatementHelper();

	static ExtensibleStatementHelper getDefaultImpl() {
		return defaultExtensibleStatementHelper;
	}

	ExtensibleStatement fromStatement(Statement statement, boolean inferred);

	class DefaultExtensibleStatementHelper implements ExtensibleStatementHelper {

		@Override
		public ExtensibleStatement fromStatement(Statement statement, boolean inferred) {
			if (statement instanceof ExtensibleStatement
					&& ((ExtensibleStatement) statement).isInferred() == inferred) {
				return (ExtensibleStatement) statement;
			}

			return new ExtensibleStatementImpl(statement.getSubject(), statement.getPredicate(), statement.getObject(),
					statement.getContext(), inferred);

		}
	}

}